{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/credit-card-type/lib/clone.js","webpack:///./node_modules/credit-card-type/index.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./node_modules/credit-card-type/lib/card-types.js","webpack:///./node_modules/credit-card-type/lib/find-best-match.js","webpack:///./node_modules/credit-card-type/lib/is-valid-input-type.js","webpack:///./node_modules/credit-card-type/lib/add-matching-cards-to-results.js","webpack:///./node_modules/credit-card-type/lib/matches.js","webpack:///./app/javascript/controllers/time_zone_controller.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./app/javascript/controllers/reactivation_components/tabbable_interface.js","webpack:///./app/javascript/controllers/reactivation_components/account_reactivator.js","webpack:///./app/javascript/controllers/reactivation_components/payment_processor.js","webpack:///./app/javascript/controllers/reactivation_components/reactivation_helper.js","webpack:///./app/javascript/controllers/reactivation_components/cc_form_validator.js","webpack:///./app/javascript/controllers/account_reactivation_controller.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack:///./app/javascript/channels/consumer.js","webpack:///./app/javascript/channels/sync_stripe_objects_channel.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","originalObject","JSON","parse","stringify","testOrder","types","clone","findBestMatch","isValidInputType","addMatchingCardsToResults","customCards","cardNames","VISA","MASTERCARD","AMERICAN_EXPRESS","DINERS_CLUB","DISCOVER","JCB","UNIONPAY","MAESTRO","ELO","MIR","HIPER","HIPERCARD","ORIGINAL_TEST_ORDER","findType","type","getCardPosition","ignoreErrorForNotExisting","position","indexOf","Error","creditCardType","cardNumber","bestMatch","results","length","map","forEach","cardConfiguration","getTypeInfo","removeCard","splice","addCard","config","existingCardPosition","push","updateCard","cardType","updates","clonedCard","keys","changeOrder","currentPosition","resetModifications","webpackContext","req","id","webpackContextResolve","e","code","resolve","visa","niceType","patterns","gaps","lengths","size","mastercard","discover","jcb","unionpay","maestro","elo","mir","hiper","hipercard","numberOfResultsWithMaxStrengthProperty","filter","result","matchStrength","hasEnoughResultsToDetermineBestMatch","reduce","String","matches","pattern","patternLength","clonedCardConfiguration","Array","isArray","min","max","maxLengthToCheck","substr","integerRepresentationOfCardNumber","parseInt","matchesRange","substring","matchesPattern","TimeZoneController","offset","sign","hours","Math","abs","floor","minutes","timezone","Date","toLocaleTimeString","timeZoneName","split","this","error","constructor","formatTimezoneOffset","getTimezoneOffset","timezoneTarget","textContent","Controller","targets","channels","require","EventListener","eventTarget","eventName","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","from","sort","left","right","leftIndex","index","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","eventListener","stop","values","listeners","concat","fetchEventListenerForBinding","handleError","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","set","descriptorPattern","parseEventTarget","eventTargetName","window","document","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","trim","match","toString","eventNameSuffix","getAttribute","Binding","context","action","willBeInvokedByEvent","invokeWithEvent","method","controller","target","Element","contains","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","b","__","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","_","findIndex","tokensAreEqual","slice","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","_newTarget","Reflect","construct","arguments","a","apply","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","replace","char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","join","targetDescriptor","targetAttribute","Scope","data","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","reject","fulfilled","step","next","rejected","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","Application","documentElement","router","readyState","register","load","rest","definitions","unload","identifiers","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","charAt","toUpperCase","capitalize","TabbableInterface","updateListener","selfs","$","each","unbind","on","showTab","currentTarget","tab","ndx","attr","removeClass","currentIndex","addClass","css","nextAll","parent","self","AccountReactivator","planId","billingPeriod","discountCode","paymentNonce","postalCode","paymentOnFile","gateway","stripePaymentMethodId","stripePaymentMethodType","setPlanType","planType","plan_type","showReactivationError","html","click","reactivate","postUrl","post","account_reactivation","response","reactivated","location","href","status","enableSubmitBtn","plan_id","billing_period","discount_code","nonce","postal_code","payment_on_file","stripe_payment_method_id","stripe_payment_method_type","humble_bundle","PaymentProcessor","ccFormValidator","process","processPaypal","processCC","success","successWithoutPayment","cardTokenizer","tokenizeCard","ccNumberTarget","ccMonthTarget","ccYearTarget","cvvTarget","ccPostalCodeTarget","paymentReceived","braintree","setup","tokenization_key","paypal","headless","singleUse","locale","enableShippingAddress","dataCollector","onReady","checkout","initAuthFlow","onPaymentMethodReceived","val","displayError","hasStripePostalCodeTarget","reactivator","stripePaymentMethodIdTarget","validator","Treehouse","CreditCardTokenizer","merchant_id","environment","BraintreeData","environments","ReactivationHelper","stripIDName","idWithHash","setPageTitle","newTitle","prop","scrollTo","querySelector","scrollIntoView","behavior","top","upperCaseFirstLetter","word","isEmpty","CreditCardFormValidator","displayValidationErrors","errors","field","displayValidationError","el","siblings","andSelf","wrapAll","err","HoganTemplates","render","after","validateFields","clearFormErrors","isPaypal","isCC","creditCardValidator","validate","validatePostalCode","helper","clearErrors","unwrapErrors","remove","children","unwrap","togglePaymentMethod","hide","show","isOnFile","hideCCForm","selectCCMethod","CreditCardValidator","AccountReactivationController","STAGES","tabbable","memoized","updateTargetContent","degreeTitle","paymentDate","switchBillingCycle","choice","hasClass","parents","memoizedDiscountedPrice","hasDiscount","disableSubmitBtn","toggleNotices","alertBanner","prepend","toggleDiscountBanner","discountableCode","discountMessage","is","callback","url","discountable_code","discount_message","amount_due","hasAnnualDiscount","json","monthly","annual","cycle","info","showPlanTab","preventDefault","chooseDegree","selectedDegree","text","choosePlan","getDegreeChoiceTarget","showBillingTab","initializeStripe","selectedTD","undefined","showReviewTab","ccType","ccLast4","displayPaymentInformation","totalPrice","totalPriceTarget","innerHTML","payment_date","infoPaymentDetailsTarget","ccMssg","onFileMssg","stripeConfig","billingFormTarget","publishable_key","client_secret","stripe","Stripe","clientSecret","paymentElement","appearance","theme","mount","stripePaymentElementTarget","createStripePaymentMethod","processStripePaymentMethod","submit","confirmSetup","confirmParams","return_url","redirect","setupIntent","payment_method","stripePaymentMethodTypeTarget","payment_method_types","paymentType","warn","logicalName","identifierForContextKey","default","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","_typeof","obj","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","props","writable","_createClass","protoProps","staticProps","adapters","logger","WebSocket","log","enabled","_adapters$logger","_len","messages","_key","now","getTime","secondsSince","time","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","pingedAt","recordPing","disconnectedAt","poll","clearTimeout","pollTimeout","setTimeout","reconnectIfStale","getPollInterval","_this$constructor","reconnectionBackoffRate","pow","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","_this2","visibilityState","isOpen","INTERNAL","message_types","welcome","ping","confirmation","rejection","protocols","supportedProtocols","Connection","consumer","open","subscriptions","monitor","disconnected","webSocket","send","isActive","getState","socketProtocols","subprotocols","uninstallEventHandlers","installEventHandlers","_ref","allowReconnect","close","reopenDelay","protocol","isState","getProtocol","_len2","states","_key2","state","events","handler","isProtocolSupported","_JSON$parse","reason","reconnect","triedToReconnect","reconnectAttempted","recordConnect","reload","confirmSubscription","notify","reconnected","recordDisconnect","notifyAll","willAttemptReconnect","Subscription","params","mixin","command","SubscriptionGuarantor","pendingSubscriptions","subscription","startGuaranteeing","stopGuaranteeing","retrySubscribing","retryTimeout","_this3","subscribe","Subscriptions","guarantor","channelName","channel","ensureActiveConnection","forget","sendCommand","_this4","_this5","callbackName","_this6","_len3","args","_key3","_len4","_key4","guarantee","_this7","Consumer","_url","createElement","createWebSocketURL","subprotocol","getConfig","createConsumer","received","syncButton","progressBar","syncStatusMessage","classList","style","width","progress","processed","total","disabled"],"mappings":"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","file":"js/application-9900001412a776dd2112.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 567);\n","'use strict';\n\nfunction clone(originalObject) {\n var dupe;\n\n if (!originalObject) {\n return null;\n }\n\n dupe = JSON.parse(JSON.stringify(originalObject));\n return dupe;\n}\n\nmodule.exports = clone;","'use strict';\n\nvar types = require('./lib/card-types');\n\nvar clone = require('./lib/clone');\n\nvar findBestMatch = require('./lib/find-best-match');\n\nvar isValidInputType = require('./lib/is-valid-input-type');\n\nvar addMatchingCardsToResults = require('./lib/add-matching-cards-to-results');\n\nvar testOrder;\nvar customCards = {};\nvar cardNames = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMERICAN_EXPRESS: 'american-express',\n DINERS_CLUB: 'diners-club',\n DISCOVER: 'discover',\n JCB: 'jcb',\n UNIONPAY: 'unionpay',\n MAESTRO: 'maestro',\n ELO: 'elo',\n MIR: 'mir',\n HIPER: 'hiper',\n HIPERCARD: 'hipercard'\n};\nvar ORIGINAL_TEST_ORDER = [cardNames.VISA, cardNames.MASTERCARD, cardNames.AMERICAN_EXPRESS, cardNames.DINERS_CLUB, cardNames.DISCOVER, cardNames.JCB, cardNames.UNIONPAY, cardNames.MAESTRO, cardNames.ELO, cardNames.MIR, cardNames.HIPER, cardNames.HIPERCARD];\ntestOrder = clone(ORIGINAL_TEST_ORDER);\n\nfunction findType(type) {\n return customCards[type] || types[type];\n}\n\nfunction getAllCardTypes() {\n return testOrder.map(function (type) {\n return clone(findType(type));\n });\n}\n\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n var position = testOrder.indexOf(name);\n\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n\n return position;\n}\n\nfunction creditCardType(cardNumber) {\n var bestMatch;\n var results = [];\n\n if (!isValidInputType(cardNumber)) {\n return [];\n }\n\n if (cardNumber.length === 0) {\n return getAllCardTypes(testOrder);\n }\n\n testOrder.forEach(function (type) {\n var cardConfiguration = findType(type);\n addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n });\n bestMatch = findBestMatch(results);\n\n if (bestMatch) {\n return [bestMatch];\n }\n\n return results;\n}\n\ncreditCardType.getTypeInfo = function (type) {\n return clone(findType(type));\n};\n\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n testOrder.splice(position, 1);\n};\n\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n customCards[config.type] = config;\n\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\n\ncreditCardType.updateCard = function (cardType, updates) {\n var clonedCard;\n var originalObject = customCards[cardType] || types[cardType];\n\n if (!originalObject) {\n throw new Error('\"' + cardType + '\" is not a recognized type. Use `addCard` instead.');\n }\n\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error('Cannot overwrite type parameter.');\n }\n\n clonedCard = clone(originalObject, true);\n Object.keys(clonedCard).forEach(function (key) {\n if (updates[key]) {\n clonedCard[key] = updates[key];\n }\n });\n customCards[clonedCard.type] = clonedCard;\n};\n\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\n\ncreditCardType.resetModifications = function () {\n testOrder = clone(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\n\ncreditCardType.types = cardNames;\nmodule.exports = creditCardType;","var map = {\n\t\"./account_reactivation_controller.js\": 566,\n\t\"./time_zone_controller.js\": 233\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 227;","'use strict';\n\nvar cardTypes = {\n visa: {\n niceType: 'Visa',\n type: 'visa',\n patterns: [4],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n mastercard: {\n niceType: 'Mastercard',\n type: 'mastercard',\n patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n 'american-express': {\n niceType: 'American Express',\n type: 'american-express',\n patterns: [34, 37],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: 'CID',\n size: 4\n }\n },\n 'diners-club': {\n niceType: 'Diners Club',\n type: 'diners-club',\n patterns: [[300, 305], 36, 38, 39],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n discover: {\n niceType: 'Discover',\n type: 'discover',\n patterns: [6011, [644, 649], 65],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: 'CID',\n size: 3\n }\n },\n jcb: {\n niceType: 'JCB',\n type: 'jcb',\n patterns: [2131, 1800, [3528, 3589]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n unionpay: {\n niceType: 'UnionPay',\n type: 'unionpay',\n patterns: [620, [624, 626], [62100, 62182], [62184, 62187], [62185, 62197], [62200, 62205], [622010, 622999], 622018, [622019, 622999], [62207, 62209], [622126, 622925], [623, 626], 6270, 6272, 6276, [627700, 627779], [627781, 627799], [6282, 6289], 6291, 6292, 810, [8110, 8131], [8132, 8151], [8152, 8163], [8164, 8171]],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVN',\n size: 3\n }\n },\n maestro: {\n niceType: 'Maestro',\n type: 'maestro',\n patterns: [493698, [500000, 506698], [506779, 508999], [56, 59], 63, 67, 6],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n elo: {\n niceType: 'Elo',\n type: 'elo',\n patterns: [401178, 401179, 438935, 457631, 457632, 431274, 451416, 457393, 504175, [506699, 506778], [509000, 509999], 627780, 636297, 636368, [650031, 650033], [650035, 650051], [650405, 650439], [650485, 650538], [650541, 650598], [650700, 650718], [650720, 650727], [650901, 650978], [651652, 651679], [655000, 655019], [655021, 655058]],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVE',\n size: 3\n }\n },\n mir: {\n niceType: 'Mir',\n type: 'mir',\n patterns: [[2200, 2204]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVP2',\n size: 3\n }\n },\n hiper: {\n niceType: 'Hiper',\n type: 'hiper',\n patterns: [637095, 637568, 637599, 637609, 637612],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n hipercard: {\n niceType: 'Hipercard',\n type: 'hipercard',\n patterns: [606282],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n }\n};\nmodule.exports = cardTypes;","'use strict';\n\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) {\n return result.matchStrength;\n }).length; // if all possible results have a maxStrength property\n // that means the card number is sufficiently long\n // enough to determine conclusively what the type is\n\n return numberOfResultsWithMaxStrengthProperty > 0 && numberOfResultsWithMaxStrengthProperty === results.length;\n}\n\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return;\n }\n\n return results.reduce(function (bestMatch, result) {\n // eslint-disable-line consistent-return\n if (!bestMatch) {\n return result;\n } // if the current best match pattern is less specific\n // than this result, set the result as the new best match\n\n\n if (bestMatch.matchStrength < result.matchStrength) {\n return result;\n }\n\n return bestMatch;\n });\n}\n\nmodule.exports = findBestMatch;","'use strict';\n\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === 'string' || cardNumber instanceof String;\n}\n\nmodule.exports = isValidInputType;","'use strict';\n\nvar clone = require('./clone');\n\nvar matches = require('./matches');\n\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, pattern, patternLength, clonedCardConfiguration;\n\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n pattern = cardConfiguration.patterns[i];\n\n if (!matches(cardNumber, pattern)) {\n continue;\n }\n\n clonedCardConfiguration = clone(cardConfiguration);\n\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n } else {\n patternLength = String(pattern).length;\n }\n\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n\n results.push(clonedCardConfiguration);\n break;\n }\n}\n\nmodule.exports = addMatchingCardsToResults;","'use strict'; // Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\n\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n return integerRepresentationOfCardNumber >= min && integerRepresentationOfCardNumber <= max;\n}\n\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n return pattern.substring(0, cardNumber.length) === cardNumber.substring(0, pattern.length);\n}\n\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n\n return matchesPattern(cardNumber, pattern);\n}\n\nmodule.exports = matches;","import { Controller } from \"stimulus\";\n\n// Handles finding the span that should contain the local timezone and filling\n// it using an instance of JavaScript's Date object\nexport default class TimeZoneController extends Controller {\n static targets = [\"timezone\"]\n\n // used to set state (runs once per controller)\n initialize() {\n try {\n const timezone = new Date()\n .toLocaleTimeString(\"en-us\", { timeZoneName: \"short\" })\n .split(\" \")[2];\n this.timezone = timezone;\n } catch (error) {\n // fallback for IE and very old browsers\n this.timezone = this.constructor.formatTimezoneOffset(new Date().getTimezoneOffset());\n }\n }\n\n // formats the timezone display for older browsers\n // use static for class methods that don't rely on `this`\n static formatTimezoneOffset(offset) {\n const sign = offset > 0 ? \"-\" : \"+\";\n const hours = (Math.abs(offset) < 600 ? \"0\" : \"\") + Math.floor(Math.abs(offset) / 60);\n const minutes = (Math.abs(offset) % 60 < 10 ? \"0\" : \"\") + (Math.abs(offset) % 60);\n return `UTC${sign}${hours}:${minutes}`;\n }\n\n // runs whenever controller connects to the DOM element\n connect() {\n this.timezoneTarget.textContent = this.timezone;\n }\n}\n","const channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","var map = {\n\t\"./sync_stripe_objects_channel.js\": 571\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 235;","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @hidden */\n\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\n\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","/* eslint-env jquery */\n\nexport default class TabbableInterface {\n constructor() {\n this.parent = $(\"[tabbable]\");\n this.currentIndex = \"0\";\n const self = this;\n $(\"[tabbable-content]\").each((index, element) => {\n if ($(element).attr(\"tabbable-index\") !== self.currentIndex) {\n $(element).css(\"display\", \"none\");\n }\n });\n }\n\n updateListener = () => {\n const selfs = this;\n $(\":not(.disabled)[tabbable-tab]\").each((index, element) => {\n $(element).unbind(\"click\");\n });\n $(\":not(.disabled)[tabbable-tab]\").on(\"click\", (event) => {\n selfs.showTab(event.currentTarget);\n });\n }\n\n showTab = (tab) => {\n // Enable tab\n this.updateListener();\n\n const ndx = $(tab).attr(\"tabbable-index\");\n $(`[tabbable-tab][tabbable-index='${ndx}']`).removeClass(\"disabled\");\n $(`[tabbable-tab][tabbable-index='${this.currentIndex}']`).removeClass(\"current\");\n $(`[tabbable-tab][tabbable-index='${ndx}']`).addClass(\"current\");\n this.currentIndex = ndx;\n\n // Show content\n $(\"[tabbable-content]\").each((index, element) => {\n if ($(element).attr(\"tabbable-index\") === ndx) {\n $(element).css(\"display\", \"\");\n } else {\n $(element).css(\"display\", \"none\");\n }\n });\n\n // Disable all tabs proceeding the current tab\n $(tab).nextAll().each((index, element) => {\n $(element).addClass(\"disabled\");\n $(element).unbind(\"click\");\n });\n }\n}\n","/* eslint-env jquery */\n\nexport default class AccountReactivator {\n constructor(planId, billingPeriod, discountCode,\n paymentNonce, postalCode, paymentOnFile, controller, gateway, stripePaymentMethodId = null, stripePaymentMethodType = null) {\n this.body = {\n plan_id: planId,\n billing_period: billingPeriod,\n discount_code: discountCode,\n nonce: paymentNonce,\n postal_code: postalCode,\n payment_on_file: paymentOnFile,\n gateway,\n stripe_payment_method_id: stripePaymentMethodId,\n stripe_payment_method_type: stripePaymentMethodType,\n humble_bundle: controller.data.get(\"humbleBundle\")\n };\n this.controller = controller;\n }\n\n setPlanType = (type) => {\n this.planType = type;\n this.body.plan_type = type;\n }\n\n showReactivationError = (message) => {\n $(\"#error-modal-content\").html(message);\n $(\"#errorModal\").css(\"display\", \"block\");\n $(\".modal-overlay\").css(\"display\", \"block\");\n $(\"#errorModal a.modal-close-extra\").click(() => {\n $(\".modal-overlay\").css(\"display\", \"none\");\n });\n }\n\n reactivate = () => {\n const postUrl = this.controller.data.get(\"postUrl\");\n const self = this;\n $.post(postUrl, { account_reactivation: this.body }, (response) => {\n if (response.response.reactivated) {\n window.location.href = this.controller.data.get(\"redirectUrl\");\n } else if (response.status === 406) {\n self.showReactivationError(response.message);\n this.controller.enableSubmitBtn();\n } else if (response.status === 402) {\n self.showReactivationError(response.message);\n this.controller.enableSubmitBtn();\n }\n });\n }\n}\n","/* eslint-env jquery */\n/* global braintree Treehouse BraintreeData */\n\nimport AccountReactivator from \"./account_reactivator\";\n\nexport default class PaymentProcessor {\n constructor(method = \"credit_card\", ccFormValidator, controller) {\n this.method = method;\n this.validator = ccFormValidator;\n this.controller = controller;\n this.config = $(\"#new_payment_method\").data(\"tokenizer-config\");\n\n if (method !== \"stripe\") {\n this.cardTokenizer = new Treehouse.CreditCardTokenizer(\n $(\"#new_payment_method\").get(0).id,\n {\n tokenization_key: this.config.tokenization_key,\n merchant_id: this.config.merchant_id,\n environment: BraintreeData.environments[this.config.environment],\n },\n this.success,\n this.error,\n );\n }\n }\n\n process = () => {\n if (this.method === \"paypal\") {\n this.processPaypal();\n } else if (this.method === \"credit_card\") {\n this.processCC();\n } else if (this.method === \"stripe\") {\n this.success();\n } else if (this.method === \"on_file\") {\n this.successWithoutPayment();\n }\n }\n\n processCC = () => {\n this.cardTokenizer.tokenizeCard(\n this.controller.ccNumberTarget.value,\n this.controller.ccMonthTarget.value,\n this.controller.ccYearTarget.value,\n this.controller.cvvTarget.value,\n this.controller.ccPostalCodeTarget.value,\n );\n }\n\n processPaypal = () => {\n const self = this;\n let paymentReceived = false;\n\n braintree.setup(this.config.tokenization_key, \"custom\",\n {\n paypal: {\n headless: true,\n singleUse: false,\n locale: \"en_US\",\n enableShippingAddress: false,\n },\n dataCollector: { paypal: true },\n onReady: checkout => this.initAuthFlow(checkout),\n onPaymentMethodReceived: (data) => {\n // Prevent multiple payment method received events from being triggered\n if (paymentReceived) return;\n paymentReceived = true;\n\n $(\"#new_payment_method\").find(\"[data-braintree-name=payment_method_nonce]\").val(data.nonce);\n self.success();\n },\n });\n }\n\n initAuthFlow = (checkout) => {\n checkout.paypal.initAuthFlow();\n }\n\n error = () => {\n this.ccFormValidator.displayError($(\"#credit_card_number\"), \"There was a problem verifying your payment details.\");\n this.controller.enableSubmitBtn();\n }\n\n success = () => {\n const postalCode = this.hasStripePostalCodeTarget ? this.ccPostalCodeTarget.value : \"\";\n const reactivator = new AccountReactivator(\n this.controller.data.get(\"id\"),\n this.controller.data.get(\"billingPeriod\"),\n this.controller.data.get(\"discountCode\"),\n $(\"#new_payment_method\").find(\"[data-braintree-name=payment_method_nonce]\").val(),\n postalCode,\n this.method === \"on_file\",\n this.controller,\n this.controller.data.get(\"gateway\"),\n this.controller.stripePaymentMethodIdTarget.value\n );\n if (this.controller.data.get(\"planChoice\") === \"degree\") {\n reactivator.setPlanType(\"degree\");\n } else {\n reactivator.setPlanType(\"plan\");\n }\n reactivator.reactivate();\n }\n\n successWithoutPayment = () => {\n const reactivator = new AccountReactivator(\n this.controller.data.get(\"id\"),\n this.controller.data.get(\"billingPeriod\"),\n this.controller.data.get(\"discountCode\"),\n null,\n this.controller.ccPostalCodeTarget.value,\n this.method === \"on_file\",\n this.controller,\n );\n if (this.controller.data.get(\"planChoice\") === \"degree\") {\n reactivator.setPlanType(\"degree\");\n } else {\n reactivator.setPlanType(\"plan\");\n }\n reactivator.reactivate();\n }\n}\n","/* eslint-env jquery */\n\nexport default class ReactivationHelper {\n stripIDName = idWithHash => idWithHash.replace(\"#\", \"\");\n\n setPageTitle = newTitle => $(document).prop(\"title\", newTitle);\n\n scrollTo = (selector) => {\n if (selector === \"TOP\") {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n return;\n }\n\n document.querySelector(selector).scrollIntoView({ behavior: \"smooth\" });\n }\n\n upperCaseFirstLetter = word => word.substr(0, 1).toUpperCase() + word.substr(1);\n\n isEmpty = value => value === null || value === \"\";\n}\n","/* eslint-env jquery */\n/* global Treehouse HoganTemplates */\n\nimport ReactivationHelper from \"./reactivation_helper\";\n\nexport default class CreditCardFormValidator {\n constructor() {\n this.creditCardValidator = new Treehouse.CreditCardValidator($(\"form#new_payment_method\"));\n this.helper = new ReactivationHelper();\n }\n\n displayValidationErrors = (errors) => {\n const self = this;\n $.each(errors, (field, error) => {\n self.displayValidationError(field, error);\n });\n }\n\n displayValidationError = (field, error) => {\n const el = $(`input[name='${field}'`);\n el.siblings().andSelf().wrapAll(\"
\");\n const err = HoganTemplates[\"signup/field_error\"].render({ error });\n el.after(err);\n }\n\n validateFields = () => {\n this.clearFormErrors();\n\n if (this.isPaypal()) {\n return true;\n }\n if (this.isCC()) {\n this.creditCardValidator.validate();\n this.creditCardValidator.errors = $.extend(\n this.creditCardValidator.errors, this.validatePostalCode(),\n );\n }\n\n const errors = $.extend({}, this.creditCardValidator.errors);\n if (Object.keys(errors).length) {\n this.displayValidationErrors(errors);\n return false;\n }\n return true;\n }\n\n validatePostalCode = () => {\n if (this.helper.isEmpty($(\"#payment_method_postal_code\").val())) {\n return { \"payment_method[postal_code]\": \"This is required\" };\n }\n return {};\n }\n\n clearFormErrors = () => {\n this.creditCardValidator.clearErrors();\n this.unwrapErrors();\n }\n\n unwrapErrors = () => {\n $(\".field_with_errors\").each((index, element) => {\n const error = $(element);\n error.find(\"p.error-message\").remove();\n error.children().unwrap();\n });\n }\n\n togglePaymentMethod = () => {\n if (this.isPaypal()) {\n $(\".credit-card-chosen\").hide();\n $(\".on-file-selected\").hide();\n $(\".paypal-chosen\").show();\n } else if (this.isCC()) {\n $(\".paypal-chosen\").hide();\n $(\".on-file-selected\").hide();\n $(\".credit-card-chosen\").show();\n } else if (this.isOnFile()) {\n $(\".paypal-chosen\").hide();\n $(\".credit-card-chosen\").hide();\n $(\".on-file-selected\").show();\n }\n }\n\n hideCCForm = () => {\n $(\".credit-card-chosen\").hide();\n }\n\n selectCCMethod = () => {\n $(\"input[name='payment_method_type'][value='credit_card']\").prop(\"checked\", true);\n }\n\n isPaypal = () => $(\"input[name='payment_method_type']\").filter(\":checked\").val() === \"paypal\";\n\n isCC = () => $(\"input[name='payment_method_type']\").filter(\":checked\").val() === \"credit_card\";\n\n isOnFile = () => $(\"input[name='payment_method_type']\").filter(\":checked\").val() === \"on_file\";\n}\n","/* eslint-env jquery */\n\nimport { Controller } from \"stimulus\";\nimport creditCardType from \"credit-card-type\";\nimport TabbableInterface from \"./reactivation_components/tabbable_interface\";\nimport PaymentProcessor from \"./reactivation_components/payment_processor\";\nimport CreditCardFormValidator from \"./reactivation_components/cc_form_validator\";\nimport ReactivationHelper from \"./reactivation_components/reactivation_helper\";\nimport AccountReactivator from \"./reactivation_components/account_reactivator\";\n\nexport default class AccountReactivationController extends Controller {\n static targets = [\n \"id\", \"name\", \"degreeTitle\", \"totalPriceMonthly\", \"totalPriceAnnual\",\n \"ccLast4\", \"ccType\", \"totalPrice\", \"paymentDate\",\n \"ccNumber\", \"cvv\", \"ccMonth\", \"ccYear\", \"ccPostalCode\", \"infoPaymentDetails\",\n \"billingForm\", \"gateway\", \"stripePaymentElement\", \"stripePaymentMethodId\", \"stripePaymentMethodType\"\n ];\n\n STAGES = {\n \"tab-auth\": 0, \"tab-plan\": 1, \"tab-billing\": 2, \"tab-review\": 3,\n };\n\n initialize = () => {\n this.tabbable = new TabbableInterface();\n this.helper = new ReactivationHelper();\n this.ccFormValidator = new CreditCardFormValidator();\n if (this.data.get(\"paymentOnFile\") !== \"None\") {\n this.ccFormValidator.hideCCForm();\n } else {\n this.ccFormValidator.selectCCMethod();\n }\n this.memoized = {};\n }\n\n connect = () => {\n this.updateTargetContent(\"name\", this.data.get(\"name\"));\n\n const degreeTitle = this.data.get(\"degreeTitle\");\n this.updateTargetContent(\"degreeTitle\", degreeTitle ? ` - ${degreeTitle}` : '');\n\n this.updateTargetContent(\"paymentDate\", this.paymentDate ?? '');\n\n this.updateTargetContent(\"totalPriceMonthly\", this.data.get(\"totalPriceMonthly\") ?? '');\n this.updateTargetContent(\"totalPriceAnnual\", this.data.get(\"totalPriceAnnual\") ?? '');\n }\n\n updateTargetContent(targetName, content) {\n try {\n const target = this[`${targetName}Target`];\n if (target) {\n target.innerHTML = content;\n }\n } catch (error) {\n console.warn(`Target element \"${targetName}\" is missing in the DOM.`);\n }\n }\n showTab(tab) {\n this.tabbable.showTab(tab);\n this.connect();\n this.helper.scrollTo(\"TOP\");\n this.enableSubmitBtn();\n }\n\n switchBillingCycle = (event) => {\n let choice = null;\n if (!$(event.target).hasClass(\".billing-option\")) {\n choice = $(event.target).parents(\"div.billing-option\");\n } else {\n choice = $(event.target);\n }\n\n choice.addClass(\"selected\");\n choice.siblings(\".selected\").removeClass(\"selected\");\n this.helper.scrollTo(\"TOP\");\n\n // Get discounted price based on selection\n this.memoizedDiscountedPrice();\n }\n\n hasDiscount = () => !this.helper.isEmpty(this.data.get(\"discountCode\"));\n\n disableSubmitBtn = () => {\n $(this.element).find(\"#submitBtn\").addClass(\"disabled loading\");\n this.data.set(\"prevent-fetch\", true);\n }\n\n enableSubmitBtn = () => {\n $(this.element).find(\"#submitBtn\").removeClass(\"disabled loading\");\n this.data.set(\"prevent-fetch\", false);\n }\n\n toggleNotices = (action, message, type) => {\n if (action === \"remove\") {\n $(\".alert-banner\").remove();\n } else {\n const alertBanner = ` \";\n $(\".content > .container\").prepend(alertBanner);\n }\n }\n\n toggleDiscountBanner = (discountableCode, discountMessage) => {\n // When the user did not provide a discount\n if (!this.data.get(\"discountCode\")) {\n return;\n }\n\n if (discountableCode === 0) {\n this.toggleNotices(\"remove\");\n $(\".discount-banner .discount-message\").html(discountMessage);\n $(\".discount-banner\").show();\n } else if (discountableCode > 0 && $(\".discount-banner\").is(\":hidden\")) {\n this.toggleNotices(\"remove\");\n this.toggleNotices(\"add\", discountMessage, \"warning\");\n $(this.element).find(\".discount-callout\").hide();\n } else if (discountableCode > 0 && $(\".discount-banner\").is(\":visible\")) {\n this.toggleNotices(\"remove\");\n this.toggleNotices(\"add\", discountMessage, \"warning\");\n $(\".discount-banner\").hide();\n $(this.element).find(\".discount-callout\").hide();\n }\n\n $(this.element).css(\"padding-top\", \"30px\");\n }\n\n memoizedDiscountedPrice = (callback) => {\n let url = `${this.data.get(\"discountPriceForUrl\")}?plan=${this.data.get(\"id\")}`;\n if (this.hasDiscount()) {\n url += `&discount_code=${this.data.get(\"discountCode\")}`;\n }\n if (this.data.get(\"planChoice\") === \"degree\") {\n url += \"°ree=true\";\n }\n\n if (this.data.get(\"planChoice\") !== \"degree\"\n && $(this.element).find(\"input[name='billing_period']:checked\").val() === \"annual\") {\n url += \"&billing_period=annual\";\n } else {\n url += \"&billing_period=monthly\";\n }\n\n const self = this;\n\n // Use memoized plan discount if available\n if (`${this.data.get(\"id\")}_annual` in this.memoized\n && $(this.element).find(\"input[name='billing_period']:checked\").val() === \"annual\") {\n this.toggleDiscountBanner(\n this.memoized[`${this.data.get(\"id\")}_annual`].discountable_code,\n this.memoized[`${this.data.get(\"id\")}_annual`].discount_message,\n );\n\n if (this.memoized[`${this.data.get(\"id\")}_annual`].amount_due !== \"$0\" && this.hasAnnualDiscount()) {\n this.data.set(\"discountPriceAnnual\", this.memoized[`${this.data.get(\"id\")}_annual`].amount_due);\n }\n\n if (callback) {\n callback();\n }\n } else if (`${this.data.get(\"id\")}_monthly` in this.memoized\n && $(this.element).find(\"input[name='billing_period']:checked\").val() === \"monthly\") {\n this.toggleDiscountBanner(\n this.memoized[`${this.data.get(\"id\")}_monthly`].discountable_code,\n this.memoized[`${this.data.get(\"id\")}_monthly`].discount_message,\n );\n\n this.data.set(\"discountPriceMonthly\", this.memoized[`${this.data.get(\"id\")}_monthly`].amount_due);\n\n if (callback) {\n callback();\n }\n } else {\n // Else fetch plan discount from server\n fetch(url)\n .then(data => data.json())\n .then((data) => {\n if (data.response.amount_due.monthly) {\n self.data.set(\"discountPriceMonthly\", data.response.amount_due.monthly);\n }\n if (data.response.amount_due.annual !== \"$0\" && self.hasAnnualDiscount()) {\n self.data.set(\"discountPriceAnnual\", data.response.amount_due.annual);\n }\n\n const cycle = $(self.element).find(\"input[name='billing_period']:checked\").val();\n const info = {\n [`${self.data.get(\"id\")}_${cycle}`]: {\n discountable_code: data.response.discountable_code,\n discount_message: data.response.discount_message,\n amount_due: data.response.amount_due[`${cycle}`],\n },\n };\n\n Object.assign(self.memoized, info);\n self.toggleDiscountBanner(\n data.response.discountable_code,\n data.response.discount_message,\n );\n\n if (callback) {\n callback();\n }\n });\n }\n }\n\n /* * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * Plan tab *\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * */\n showPlanTab = (event) => {\n event.preventDefault();\n this.showTab(\"#tab-plan\");\n }\n\n chooseDegree = () => {\n this.data.set(\"planChoice\", \"degree\");\n const selectedDegree = $(this.element)\n .find(\".plan-techdegree-selection-list input[name='techdegree-selection']:checked\")\n .parent();\n\n $(\".plan-selected-degree\").text(selectedDegree.attr(\"data-degree-title\"));\n $(\".plan-techdegree\").find(\"[data-selected-degree-projects-count]\").text(selectedDegree.attr(\"data-degree-projects-count\"));\n }\n\n choosePlan = () => {\n this.data.set(\"planChoice\", \"plan\");\n }\n\n getDegreeChoiceTarget = (event) => {\n if ($(event.target).attr(\"id\") === \"continue-current-plan\") {\n return $(event.target);\n }\n return $(this.element)\n .find(\".plan-techdegree-selection-list input[name='techdegree-selection']:checked\")\n .parent();\n }\n\n /* * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * Billing tab *\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * */\n showBillingTab = (event) => {\n if (event) {\n event.preventDefault();\n }\n\n if (this.data.get(\"gateway\") === \"stripe\"){\n this.initializeStripe();\n }\n\n if ($(event.target).parents(\"#tab-plan-content\").length) {\n if ($(event.target).html() === \"Switch Plan\") {\n this.chooseDegree();\n }\n\n if (this.data.get(\"planChoice\") === \"degree\") {\n // User selected a Techdegree\n const selectedTD = this.getDegreeChoiceTarget(event);\n this.data.set(\"id\", selectedTD.attr(\"data-plan-addon-id\"));\n this.data.set(\"name\", selectedTD.attr(\"data-plan-name\"));\n this.data.set(\"totalPriceMonthly\", selectedTD.attr(\"data-total-price-monthly\"));\n this.data.set(\"totalPriceAnnual\", selectedTD.attr(\"data-total-price-annual\"));\n this.data.set(\"degreeTitle\", selectedTD.attr(\"data-degree-title\"));\n this.data.set(\"billingPeriod\", \"monthly\");\n $(this.element).find(\"#billing-cycle-container\").css(\"display\", \"none\");\n if (selectedTD.attr(\"data-plan-addon-id\") === undefined) {\n return;\n }\n } else {\n // User selected other plans\n this.data.set(\"id\", $(event.target).attr(\"data-plan-id\"));\n this.data.set(\"name\", $(event.target).attr(\"data-plan-name\"));\n this.data.set(\"totalPriceMonthly\", $(event.target).attr(\"data-total-price-monthly\"));\n this.data.set(\"totalPriceAnnual\", $(event.target).attr(\"data-total-price-annual\"));\n this.data.set(\"degreeTitle\", \"\");\n $(this.element).find(\"#billing-cycle-container\").css(\"display\", \"\");\n }\n }\n\n if (this.hasDiscount()) {\n this.memoizedDiscountedPrice(() => {\n this.showTab(\"#tab-billing\");\n });\n } else {\n this.showTab(\"#tab-billing\");\n }\n }\n\n hasAnnualDiscount = () => this.data.get(\"hasAnnualDiscount\") === \"true\";\n\n togglePaymentMethod = () => {\n this.ccFormValidator.togglePaymentMethod();\n }\n\n toggleChangeTechdegreePanel() {\n if ($(this.element).find(\".techdegree-topic-selection\").hasClass(\"hidden\")) {\n $(this.element).find(\".techdegree-topic-selection\").removeClass(\"hidden\");\n this.helper.scrollTo(\".techdegree-topic-selection\");\n } else {\n $(this.element).find(\".techdegree-topic-selection\").addClass(\"hidden\");\n }\n }\n\n /* * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n * Review tab *\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * */\n showReviewTab = (event) => {\n event.preventDefault();\n \n if ($(event.target).hasClass(\"disabled\")) {\n return;\n }\n \n if (this.data.get(\"gateway\") !== \"stripe\") {\n if (!this.ccFormValidator.isPaypal() && !this.ccFormValidator.validateFields()) {\n return;\n }\n \n // Store payment info\n if (this.ccFormValidator.isCC()) {\n this.ccType = this.helper.upperCaseFirstLetter(\n creditCardType(this.ccNumberTarget.value)[0].type,\n );\n this.ccLast4 = this.ccNumberTarget.value.substr(-4);\n }\n \n // Store billing cycle\n if (this.data.get(\"degreeTitle\")) {\n // The billing period is always monthly for degree students\n this.data.set(\"billingPeriod\", \"monthly\");\n } else {\n this.data.set(\"billingPeriod\", $(this.element).find(\"input[name='billing_period']:checked\").val());\n }\n \n this.displayPaymentInformation();\n \n // Retrieve discount plan prices\n if (this.hasDiscount() && this.data.get(\"billingPeriod\") === \"monthly\") {\n this.totalPrice = this.data.get(\"discountPriceMonthly\");\n } else if (this.hasAnnualDiscount() && this.data.get(\"billingPeriod\") === \"annual\") {\n this.totalPrice = this.data.get(\"discountPriceAnnual\");\n } else if (!this.hasDiscount() && this.data.get(\"billingPeriod\") === \"monthly\") {\n this.totalPrice = this.data.get(\"totalPriceMonthly\");\n } else if (!this.hasAnnualDiscount() && this.data.get(\"billingPeriod\") === \"annual\") {\n this.totalPrice = this.data.get(\"totalPriceAnnual\");\n }\n \n this.totalPriceTarget.innerHTML = this.totalPrice;\n \n const url = [`${this.data.get(\"reviewUrl\")}?plan_id=${this.data.get(\"id\")}`,\n `°ree=${!this.helper.isEmpty(this.data.get(\"degreeTitle\"))}`].join(\"\");\n const self = this;\n $.get(url, (data) => {\n self.paymentDate = data.response.payment_date;\n this.showTab(\"#tab-review\");\n });\n } else {\n // Handle Stripe case\n // Store billing cycle\n if (this.data.get(\"degreeTitle\")) {\n // The billing period is always monthly for degree students\n this.data.set(\"billingPeriod\", \"monthly\");\n } else {\n this.data.set(\"billingPeriod\", $(this.element).find(\"input[name='billing_period']:checked\").val());\n }\n \n this.displayPaymentInformation();\n \n // Retrieve discount plan prices\n if (this.hasDiscount() && this.data.get(\"billingPeriod\") === \"monthly\") {\n this.totalPrice = this.data.get(\"discountPriceMonthly\");\n } else if (this.hasAnnualDiscount() && this.data.get(\"billingPeriod\") === \"annual\") {\n this.totalPrice = this.data.get(\"discountPriceAnnual\");\n } else if (!this.hasDiscount() && this.data.get(\"billingPeriod\") === \"monthly\") {\n this.totalPrice = this.data.get(\"totalPriceMonthly\");\n } else if (!this.hasAnnualDiscount() && this.data.get(\"billingPeriod\") === \"annual\") {\n this.totalPrice = this.data.get(\"totalPriceAnnual\");\n }\n \n this.totalPriceTarget.innerHTML = this.totalPrice;\n \n const url = [`${this.data.get(\"reviewUrl\")}?plan_id=${this.data.get(\"id\")}`,\n `°ree=${!this.helper.isEmpty(this.data.get(\"degreeTitle\"))}`].join(\"\");\n const self = this;\n $.get(url, (data) => {\n self.paymentDate = data.response.payment_date;\n this.showTab(\"#tab-review\");\n });\n }\n } \n\n displayPaymentInformation = () => {\n if (this.data.get(\"gateway\") === \"stripe\") {\n this.infoPaymentDetailsTarget.innerHTML = \"Payment Method
\";\n } else if (this.ccFormValidator.isPaypal()) {\n const paypalType = \"Paypal
\";\n const paypalMssg = \"\"\n + \"When you click 'Confirm and Pay' below we'll take you to \"\n + \"Paypal's site to set up your billing information.
\";\n this.infoPaymentDetailsTarget.innerHTML = `${paypalType} ${paypalMssg}`;\n } else if (this.ccFormValidator.isCC()) {\n const ccMssg = `${this.ccType?.replace(/-/g, \" \")} ending with ${this.ccLast4}`;\n this.infoPaymentDetailsTarget.innerHTML = ccMssg;\n } else if (this.ccFormValidator.isOnFile()) {\n const onFileMssg = `${this.data.get(\"paymentOnFile\")}`;\n this.infoPaymentDetailsTarget.innerHTML = onFileMssg;\n }\n }\n \n initializeStripe = () => {\n this.stripeConfig = JSON.parse(this.billingFormTarget.getAttribute(\"data-stripe-config\"));\n if (this.stripeConfig) {\n const { publishable_key, client_secret } = this.stripeConfig;\n this.stripe = new Stripe(publishable_key);\n this.elements = this.stripe.elements({ clientSecret: client_secret });\n this.paymentElement = this.elements.create(\"payment\", { appearance: { theme: \"stripe\" } });\n this.paymentElement.mount(this.stripePaymentElementTarget);\n this.clientSecret = client_secret;\n } else {\n console.error(\"Stripe config is not provided.\");\n }\n } \n\n createStripePaymentMethod = () => {\n if (!this.elements) {\n console.error(\"Stripe elements not initialized.\");\n this.enableSubmitBtn();\n return;\n }\n\n if (!this.ccFormValidator.isOnFile()) {\n this.elements.submit().then(() => {\n this.stripe.confirmSetup({\n elements: this.elements,\n clientSecret: this.clientSecret,\n confirmParams: {\n return_url: window.location.href,\n },\n redirect: 'if_required',\n }).then((result) => {\n if (result.error) {\n this.enableSubmitBtn();\n console.error(result.error.message);\n } else if (result.setupIntent) {\n this.stripePaymentMethodIdTarget.value = result.setupIntent.payment_method;\n this.stripePaymentMethodTypeTarget.value = result.setupIntent.payment_method_types[0];\n this.processStripePaymentMethod();\n }\n }).catch((error) => {\n this.enableSubmitBtn();\n console.error(error.message);\n });\n }).catch((error) => {\n this.enableSubmitBtn();\n console.error(\"Error submitting elements:\", error);\n });\n } else if (this.stripeConfig.stripe_payment_method_id && this.stripeConfig.stripe_payment_method_type) {\n this.processStripePaymentMethod(this.stripeConfig.stripe_payment_method_id, this.stripeConfig.stripe_payment_method_type);\n }\n } \n \n processStripePaymentMethod = (stripe_payment_method_id = null, stripe_payment_method_type = null) => {\n const postalCode = this.hasStripePostalCodeTarget ? this.ccPostalCodeTarget.value : '';\n \n const reactivator = new AccountReactivator(\n this.data.get(\"id\"),\n this.data.get(\"billingPeriod\"),\n this.data.get(\"discountCode\"),\n null, // Stripe does not use payment nonce\n postalCode,\n this.ccFormValidator.isOnFile(),\n this,\n this.data.get(\"gateway\"), // Pass the gateway information\n this.stripePaymentMethodIdTarget.value || stripe_payment_method_id, // Use the Stripe payment method ID here\n this.stripePaymentMethodTypeTarget.value || stripe_payment_method_type\n );\n if (this.data.get(\"planChoice\") === \"degree\") {\n reactivator.setPlanType(\"degree\");\n } else {\n reactivator.setPlanType(\"plan\");\n }\n reactivator.reactivate();\n } \n\n submit = () => {\n if (this.data.get(\"prevent-fetch\") === \"true\") {\n return;\n }\n \n this.disableSubmitBtn();\n\n // If a stripe user choses Paypal , we need to change the gateway to braintree\n if (this.ccFormValidator.isPaypal() && this.data.get(\"gateway\") == \"stripe\"){\n this.data.set(\"gateway\", \"braintree\");\n this.element.setAttribute(\"data-account-reactivation-gateway\", \"braintree\");\n }\n \n if (this.data.get(\"gateway\") === \"stripe\") {\n this.createStripePaymentMethod();\n } else {\n // Run validations if the gateway is not Stripe\n if (!this.ccFormValidator.isPaypal() && !this.ccFormValidator.validateFields()) {\n this.enableSubmitBtn();\n return;\n }\n \n let paymentType = null;\n if (this.ccFormValidator.isPaypal()) {\n paymentType = \"paypal\";\n } else if (this.ccFormValidator.isCC()) {\n paymentType = \"credit_card\";\n } else if (this.ccFormValidator.isOnFile()) {\n paymentType = \"on_file\";\n }\n const paymentProcessor = new PaymentProcessor(paymentType, this.ccFormValidator, this);\n paymentProcessor.process();\n }\n } \n}\n","// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\";\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\";\n\nconst application = Application.start();\nconst context = require.context(\"controllers\", true, /_controller\\.js$/);\napplication.load(definitionsFromContext(context));\n","export function definitionsFromContext(context) {\n return context.keys().map(function (key) {\n return definitionForModuleWithContextAndKey(context, key);\n }).filter(function (value) {\n return value;\n });\n}\n\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\n\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module.default;\n\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier: identifier,\n controllerConstructor: controllerConstructor\n };\n }\n}\n\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar adapters = {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined\n};\nvar logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n\n messages.push(Date.now());\n\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [\"[ActionCable]\"].concat(messages));\n }\n }\n};\n\nvar now = function now() {\n return new Date().getTime();\n};\n\nvar secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n};\n\nvar ConnectionMonitor = /*#__PURE__*/function () {\n function ConnectionMonitor(connection) {\n _classCallCheck(this, ConnectionMonitor);\n\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n\n _createClass(ConnectionMonitor, [{\n key: \"start\",\n value: function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. stale threshold = \".concat(this.constructor.staleThreshold, \" s\"));\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n }, {\n key: \"isRunning\",\n value: function isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n }, {\n key: \"recordPing\",\n value: function recordPing() {\n this.pingedAt = now();\n }\n }, {\n key: \"recordConnect\",\n value: function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n }, {\n key: \"recordDisconnect\",\n value: function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n }, {\n key: \"startPolling\",\n value: function startPolling() {\n this.stopPolling();\n this.poll();\n }\n }, {\n key: \"stopPolling\",\n value: function stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n }, {\n key: \"poll\",\n value: function poll() {\n var _this = this;\n\n this.pollTimeout = setTimeout(function () {\n _this.reconnectIfStale();\n\n _this.poll();\n }, this.getPollInterval());\n }\n }, {\n key: \"getPollInterval\",\n value: function getPollInterval() {\n var _this$constructor = this.constructor,\n staleThreshold = _this$constructor.staleThreshold,\n reconnectionBackoffRate = _this$constructor.reconnectionBackoffRate;\n var backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n var jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n var jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n }, {\n key: \"reconnectIfStale\",\n value: function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \".concat(this.reconnectAttempts, \", time stale = \").concat(secondsSince(this.refreshedAt), \" s, stale threshold = \").concat(this.constructor.staleThreshold, \" s\"));\n this.reconnectAttempts++;\n\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect. time disconnected = \".concat(secondsSince(this.disconnectedAt), \" s\"));\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n }, {\n key: \"refreshedAt\",\n get: function get() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n }, {\n key: \"connectionIsStale\",\n value: function connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n }, {\n key: \"disconnectedRecently\",\n value: function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n }, {\n key: \"visibilityDidChange\",\n value: function visibilityDidChange() {\n var _this2 = this;\n\n if (document.visibilityState === \"visible\") {\n setTimeout(function () {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \".concat(document.visibilityState));\n\n _this2.connection.reopen();\n }\n }, 200);\n }\n }\n }]);\n\n return ConnectionMonitor;\n}();\n\nConnectionMonitor.staleThreshold = 6;\nConnectionMonitor.reconnectionBackoffRate = .15;\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\",\n remote: \"remote\"\n },\n default_mount_path: \"/cable\",\n protocols: [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n};\nvar message_types = INTERNAL.message_types,\n protocols = INTERNAL.protocols;\nvar supportedProtocols = protocols.slice(0, protocols.length - 1);\nvar indexOf = [].indexOf;\n\nvar Connection = /*#__PURE__*/function () {\n function Connection(consumer) {\n _classCallCheck(this, Connection);\n\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n _createClass(Connection, [{\n key: \"send\",\n value: function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"open\",\n value: function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \".concat(this.getState()));\n return false;\n } else {\n var socketProtocols = [].concat(_toConsumableArray(protocols), _toConsumableArray(this.consumer.subprotocols || []));\n logger.log(\"Opening WebSocket, current state is \".concat(this.getState(), \", subprotocols: \").concat(socketProtocols));\n\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n },\n allowReconnect = _ref.allowReconnect;\n\n if (!allowReconnect) {\n this.monitor.stop();\n }\n\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n }, {\n key: \"reopen\",\n value: function reopen() {\n logger.log(\"Reopening WebSocket, current state is \".concat(this.getState()));\n\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \".concat(this.constructor.reopenDelay, \"ms\"));\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n }, {\n key: \"getProtocol\",\n value: function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n }, {\n key: \"isOpen\",\n value: function isOpen() {\n return this.isState(\"open\");\n }\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n }, {\n key: \"triedToReconnect\",\n value: function triedToReconnect() {\n return this.monitor.reconnectAttempts > 0;\n }\n }, {\n key: \"isProtocolSupported\",\n value: function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n }, {\n key: \"isState\",\n value: function isState() {\n for (var _len2 = arguments.length, states = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n states[_key2] = arguments[_key2];\n }\n\n return indexOf.call(states, this.getState()) >= 0;\n }\n }, {\n key: \"getState\",\n value: function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"installEventHandlers\",\n value: function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\".concat(eventName)] = handler;\n }\n }\n }, {\n key: \"uninstallEventHandlers\",\n value: function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\".concat(eventName)] = function () {};\n }\n }\n }]);\n\n return Connection;\n}();\n\nConnection.reopenDelay = 500;\nConnection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n\n var _JSON$parse = JSON.parse(event.data),\n identifier = _JSON$parse.identifier,\n message = _JSON$parse.message,\n reason = _JSON$parse.reason,\n reconnect = _JSON$parse.reconnect,\n type = _JSON$parse.type;\n\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true;\n }\n\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \".concat(reason));\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false;\n return this.subscriptions.notify(identifier, \"connected\", {\n reconnected: true\n });\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {\n reconnected: false\n });\n }\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\".concat(this.getProtocol(), \"' subprotocol\"));\n this.disconnected = false;\n\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n\n if (this.disconnected) {\n return;\n }\n\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nvar extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n\n return object;\n};\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, Subscription);\n\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n _createClass(Subscription, [{\n key: \"perform\",\n value: function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n }\n }, {\n key: \"send\",\n value: function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionGuarantor = /*#__PURE__*/function () {\n function SubscriptionGuarantor(subscriptions) {\n _classCallCheck(this, SubscriptionGuarantor);\n\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n\n _createClass(SubscriptionGuarantor, [{\n key: \"guarantee\",\n value: function guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(\"SubscriptionGuarantor guaranteeing \".concat(subscription.identifier));\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(\"SubscriptionGuarantor already guaranteeing \".concat(subscription.identifier));\n }\n\n this.startGuaranteeing();\n }\n }, {\n key: \"forget\",\n value: function forget(subscription) {\n logger.log(\"SubscriptionGuarantor forgetting \".concat(subscription.identifier));\n this.pendingSubscriptions = this.pendingSubscriptions.filter(function (s) {\n return s !== subscription;\n });\n }\n }, {\n key: \"startGuaranteeing\",\n value: function startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n }, {\n key: \"stopGuaranteeing\",\n value: function stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n }, {\n key: \"retrySubscribing\",\n value: function retrySubscribing() {\n var _this3 = this;\n\n this.retryTimeout = setTimeout(function () {\n if (_this3.subscriptions && typeof _this3.subscriptions.subscribe === \"function\") {\n _this3.pendingSubscriptions.map(function (subscription) {\n logger.log(\"SubscriptionGuarantor resubscribing \".concat(subscription.identifier));\n\n _this3.subscriptions.subscribe(subscription);\n });\n }\n }, 500);\n }\n }]);\n\n return SubscriptionGuarantor;\n}();\n\nvar Subscriptions = /*#__PURE__*/function () {\n function Subscriptions(consumer) {\n _classCallCheck(this, Subscriptions);\n\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n\n _createClass(Subscriptions, [{\n key: \"create\",\n value: function create(channelName, mixin) {\n var channel = channelName;\n var params = _typeof(channel) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n }, {\n key: \"add\",\n value: function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n }, {\n key: \"remove\",\n value: function remove(subscription) {\n this.forget(subscription);\n\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n\n return subscription;\n }\n }, {\n key: \"reject\",\n value: function reject(identifier) {\n var _this4 = this;\n\n return this.findAll(identifier).map(function (subscription) {\n _this4.forget(subscription);\n\n _this4.notify(subscription, \"rejected\");\n\n return subscription;\n });\n }\n }, {\n key: \"forget\",\n value: function forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter(function (s) {\n return s !== subscription;\n });\n return subscription;\n }\n }, {\n key: \"findAll\",\n value: function findAll(identifier) {\n return this.subscriptions.filter(function (s) {\n return s.identifier === identifier;\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n\n return this.subscriptions.map(function (subscription) {\n return _this5.subscribe(subscription);\n });\n }\n }, {\n key: \"notifyAll\",\n value: function notifyAll(callbackName) {\n var _this6 = this;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return this.subscriptions.map(function (subscription) {\n return _this6.notify.apply(_this6, [subscription, callbackName].concat(args));\n });\n }\n }, {\n key: \"notify\",\n value: function notify(subscription, callbackName) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var subscriptions;\n\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n\n return subscriptions.map(function (subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n }\n }, {\n key: \"subscribe\",\n value: function subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n }, {\n key: \"confirmSubscription\",\n value: function confirmSubscription(identifier) {\n var _this7 = this;\n\n logger.log(\"Subscription confirmed \".concat(identifier));\n this.findAll(identifier).map(function (subscription) {\n return _this7.guarantor.forget(subscription);\n });\n }\n }, {\n key: \"sendCommand\",\n value: function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n }]);\n\n return Subscriptions;\n}();\n\nvar Consumer = /*#__PURE__*/function () {\n function Consumer(url) {\n _classCallCheck(this, Consumer);\n\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n this.subprotocols = [];\n }\n\n _createClass(Consumer, [{\n key: \"url\",\n get: function get() {\n return createWebSocketURL(this._url);\n }\n }, {\n key: \"send\",\n value: function send(data) {\n return this.connection.send(data);\n }\n }, {\n key: \"connect\",\n value: function connect() {\n return this.connection.open();\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n }, {\n key: \"ensureActiveConnection\",\n value: function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n }, {\n key: \"addSubProtocol\",\n value: function addSubProtocol(subprotocol) {\n this.subprotocols = [].concat(_toConsumableArray(this.subprotocols), [subprotocol]);\n }\n }]);\n\n return Consumer;\n}();\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\".concat(name, \"']\"));\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };","import { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","import consumer from \"./consumer\"\n\nconsumer.subscriptions.create(\"SyncStripeObjectsChannel\", {\n received(data) {\n // DOM elements\n const syncButton = document.querySelector(\"#sync-button\");\n const progressBar = document.querySelector(\".progress-bar\");\n const syncStatusMessage = document.querySelector(\".sync-status-message\");\n\n // Handle errors if any\n if (data.errors && data.errors.length > 0) {\n syncStatusMessage.classList.add(\"active\");\n console.error(\"Errors occurred during sync:\", data.errors.join(\"\\n\"));\n // Display the first error in the status message, or handle as needed\n syncStatusMessage.textContent = \"Error: \" + data.errors;\n syncStatusMessage.classList.add(\"error\");\n }\n\n // Update UI with the progress\n progressBar.style.width = `${data.progress}%`;\n progressBar.textContent = `Progress: ${data.progress}%`;\n\n if (data.progress < 100) {\n // Sync is in progress\n progressBar.classList.add(\"active\");\n syncStatusMessage.classList.add(\"active\");\n syncStatusMessage.textContent = `Syncing... (${data.processed}/${data.total} items processed)`;\n syncButton.textContent = \"Syncing...\";\n syncButton.disabled = true;\n } else {\n // Sync is complete\n syncStatusMessage.textContent = `Sync complete!`;\n setTimeout(() => {\n syncStatusMessage.textContent = `Sync complete! (${data.processed}/${data.total} items processed)`;\n progressBar.classList.remove(\"active\");\n syncButton.textContent = \"Sync to Stripe\";\n syncButton.disabled = false;\n if (data.errors.length == 0) syncStatusMessage.classList.remove(\"active\");\n }, 10000);\n }\n }\n});\n"],"sourceRoot":""}