{"version":3,"file":"static/js/4687.97a98eb1.chunk.js","mappings":"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AAI,IACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJtkE,GAAI,MACJukE,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJ,MAAO,MACPC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,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","sources":["webpack:///./node_modules/@okta/okta-signin-widget/src/authClient/oie.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/authClient/default.ts","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/_commonjsHelpers.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/handlebars.runtime.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/base.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/utils.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/exception.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/helpers.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/block-helper-missing.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/each.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/helper-missing.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/if.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/log.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/lookup.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/with.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/decorators.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/inline.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/logger.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/proto-access.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/create-new-lookup-object.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/base.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/safe-string.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/runtime.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/wrapHelper.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/no-conflict.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/underscore-min.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/lib/underscore/underscore-min.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/underscore-wrapper.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/backbone.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/vendor/lib/backbone.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/framework/Collection.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/models/BaseCollection.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/framework/Model.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/models/Model.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/models/BaseModel.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/jquery-wrapper.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/BrowserFeatures.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Logger.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Bundles.ts","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/StringUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/SchemaUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/EnumTypeHelper.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/models/SchemaProperty.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/models/BaseSchema.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Logger.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/SettingsModel.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/framework/View.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/TemplateUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/BaseView.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/components/Notification.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/BaseRouter.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/StateMachine.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/BaseController.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/ViewUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/components/BaseButtonLink.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/ButtonFactory.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Class.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/_virtual/js.cookie.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/vendor/lib/js.cookie.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Cookie.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Clipboard.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Keys.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Util.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/handlebars/handle-url.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/handlebars/helper-i18n.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/framework/ListView.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/Backbone.ListView.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/components/BaseDropDown.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/FormUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/components/ReadModeBar.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/components/Toolbar.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/ErrorBanner.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/ErrorParser.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputContainer.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputRegistry.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputFactory.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/qtip2/dist/jquery.qtip.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputLabel.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/InputWrapper.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/BaseForm.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/vendor/plugins/chosen.jquery.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/components/Callout.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/util/Time.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/BaseInput.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/Select.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/BooleanSelect.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/DeletableBox.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/TextBoxSet.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/helpers/SchemaFormFactory.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/vendor/plugins/jquery.custominput.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/CheckBox.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/vendor/plugins/jquery.placeholder.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/TextBox.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/PasswordBox.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/Radio.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/courage/views/forms/inputs/InputGroup.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/util/scrollParent.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/@okta/courage-dist/esm/src/CourageForSigninWidget.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Enums.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Util.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/BaseLoginModel.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/BaseLoginController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/FormType.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/FormController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/AccountUnlockedController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/TimeUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/FactorUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/TextBox.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-factors/EnterPasscodeForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-factors/Footer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ActivateTotpController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/admin-consent/ScopeItem.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/admin-consent/ScopeList.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/templates/consentLogoHeaderTemplate.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/AdminConsentRequiredController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Errors.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/util/OAuthErrors.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/util/OAuth2Util.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/RouterUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/ErrorCodes.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-factors/BarcodeView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/BarcodePushController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/BarcodeTotpController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/consent/ScopeItem.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/consent/ScopeList.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/consent/ScopeCheckBox.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/SkipLink.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ConsentRequiredController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/expired-password/Footer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/CustomPasswordExpiredController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/DeviceActivateController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/DeviceActivateTerminalController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollCustomFactorController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/Factor.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/HtmlErrorMessageView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollActivateCustomFactorController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/ResendEmailView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollActivateEmailController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/countryCallingCodes.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/CountryUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-factors/PhoneTextBox.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollCallAndSmsController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-choices/FactorList.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-choices/Footer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-choices/RequiredFactorList.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollChoicesController.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/vendor/duo_web_sdk/index.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollDuoController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollEmailController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollHotpController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollOnPremController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/ValidationUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollPasswordController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollQuestionController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollSymantecVipController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/StoreLinks.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollTotpController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/FidoUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollU2FController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/EnrollUser.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/ProfileSchema.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/RegistrationFormFactory.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enrollUser/EnrollUserForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/FooterWithBackLink.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollUserController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/CryptoUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/webauthn.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollWebauthnController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/Spinner.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollWindowsHelloController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollYubikeyController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnrollmentLinkSentController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/EnterPasscodePushFlowController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/ContactSupport.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ForgotPasswordController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/CookieUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/PrimaryAuth.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/DeviceFingerprint.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/primary-auth/CustomButtons.js","webpack:///./node_modules/@okta/okta-signin-widget/packages/vendor/TypingDnaRecorder-JavaScript/typingdna.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/util/TypingUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/primary-auth/PrimaryAuthForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/Footer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/FooterRegistration.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/PrimaryAuthController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/IDPDiscovery.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/idp-discovery/IDPDiscoveryForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/IDPDiscoveryController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ForceIDPDiscoveryController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-factors/ManualSetupPushFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ManualSetupPushController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/enroll-factors/ManualSetupFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ManualSetupTotpController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/factor-verify/EmailMagicLinkForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/InlineTOTPForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/PassCodeForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/PasswordForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/NumberChallengeView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/PushForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/SecurityQuestionForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/SendEmailAndVerifyCodeForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/TOTPForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/YubikeyForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/FooterSignout.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/FooterMFA.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/MfaVerifyController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/PasswordRequirements.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/PasswordExpiredController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/PasswordResetController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/PollController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/PwdResetEmailSentController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/RecoveryChallengeController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/RecoveryLoadingController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/RecoveryQuestionController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/RefreshAuthStateController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/RegistrationCompleteController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/LoginModel.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/RegistrationSchema.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/registration/SubSchema.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/RegistrationController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/UnlockAccountController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/UnlockEmailSentController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/VerifyCustomFactorController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/VerifyDuoController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/VerifyPIVController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/VerifyU2FController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/VerifyWebauthnController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/VerifyWindowsHelloController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/FooterWithBackLinkOnError.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/controllers/ErrorStateController.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/models/AppState.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/IDP.js","webpack:///./node_modules/@okta/okta-signin-widget/src/models/Settings.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/AuthContainer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Animations.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/LoadingBeacon.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/Header.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/SecurityBeacon.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/ColorsUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/LanguageUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/BaseLoginRouter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/dropdown/FactorsDropDownOptions.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/mfa-verify/dropdown/FactorsDropDown.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/FactorBeacon.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/views/shared/PIVBeacon.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v1/LoginRouter.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/RemediationConstants.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/ui-schema/ion-object-handler.js","webpack:///./node_modules/@okta/okta-signin-widget/src/util/Hooks.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/mixins/mixins.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/models/AppState.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/sessionStorageHelper.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/constants.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/startLoginFlow.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/emailVerifyCallback.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/responseTransformer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/TimeZone.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/ui-schema/ion-string-handler.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/uiSchemaTransformer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/ui-schema/ion-boolean-handler.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/AuthenticatorUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/enroll-profile/i18nBaseAttributeMappings.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/i18nTransformer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/updateAppState.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/interactionCodeFlow.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/transformIdxResponse.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/formatError.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/IonResponseHelper.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/BaseLoginRouter.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/client/handleConfiguredFlow.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseHeader.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/Link.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/ToggleTextLink.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/LinksUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/SkipOptionalEnrollmentButton.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/Constants.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/AuthenticatorEnrollOptions.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/AuthenticatorVerifyOptions.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/captcha/CaptchaView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/FormInputFactory.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseForm.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/polling.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseFormWithPolling.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseModel.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/ViewClassNamesFactory.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/ChallengeViewUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/internals/BaseOktaVerifyChallengeView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/DeviceFingerprinting.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/IdentifierFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/signin/SignInWithIdps.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/signin/CustomButtons.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/signin/SignInWithDeviceOption.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/signin/SignInWithWebAuthn.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/CustomAccessDeniedErrorMessage.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/IdentifierView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/RedirectIdPView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/IdentifyRecoveryView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/AuthenticatorFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/HeaderBeacon.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/BaseAuthenticatorView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/EmailAuthenticatorHeader.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/EmailMagicLinkOTPTerminalView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/end-user-remediation/EndUserRemediationTerminalMessage.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/TerminalView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/AutoRedirectView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/utils/AutoRedirectUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/PollView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/AdminConsentViewHeader.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/ConsentViewForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/AdminConsentView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/EnduserConsentViewFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/EnduserConsentViewHeader.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/EnduserConsentAgreementText.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/EnduserConsentView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/ScopeCheckBox.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/GranularConsentView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/consent/EnduserEmailConsentView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/OktaVerifyAuthenticatorHeader.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/device/DeviceChallengePollView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/device/SSOExtensionView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/device/SignInDeviceView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/OdaOktaVerifyTerminalView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/MdmOktaVerifyTerminalView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/device/DeviceEnrollmentTerminalView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/password/PasswordPolicyUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/EnrollProfileView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/EnrollProfileUpdateView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/activation/RequestActivationEmailView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/SelectAuthenticatorEnrollView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/SelectAuthenticatorVerifyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/authenticator/SelectAuthenticatorUnlockAccountView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/password/EnrollAuthenticatorPasswordView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/password/ChallengeAuthenticatorPasswordView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/password/ReEnrollAuthenticatorPasswordView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/password/ReEnrollAuthenticatorWarningPasswordView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/password/ResetAuthenticatorPasswordView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/BaseResendView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/phone/ChallengeAuthenticatorPhoneView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/phone/EnrollAuthenticatorPhoneView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/phone/EnrollAuthenticatorDataPhoneView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/phone/ChallengeAuthenticatorDataPhoneView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/security-question/EnrollAuthenticatorSecurityQuestionView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/security-question/ChallengeAuthenticatorSecurityQuestion.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/webauthn/EnrollWebauthnInfoView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/webauthn/EnrollWebauthnView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/webauthn/ChallengeWebauthnInfoView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/components/ChallengeWebauthnFooter.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/webauthn/EnrollWebAuthnResidentkeyLinkView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/webauthn/ChallengeWebauthnView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/email.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/email/BaseAuthenticatorEmailView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/email/AuthenticatorEmailViewUtil.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/email/EnrollAuthenticatorEmailView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/email/ChallengeAuthenticatorEmailView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/email/ChallengeAuthenticatorDataEmailView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/OVResendView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/SwitchEnrollChannelLinkView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/EnrollChannelPollDescriptionView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/EnrollPollOktaVerifyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/SelectEnrollmentChannelOktaVerifyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/EnrollementChannelDataOktaVerifyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/ChallengePushView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/ChallengeOktaVerifyFastPassView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/ResendNumberChallengeView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/NumberChallengePhoneView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/NumberChallengePushView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/ChallengeOktaVerifyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/ChallengeOktaVerifyTotpView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/ChallengeOktaVerifyResendPushView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/ChallengeOktaVerifyCustomAppPushOnlyFormView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/ChallengeOktaVerifyCustomAppFormView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/shared/ChallengeOktaVerifyCustomAppDataView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/ov/ChallengeOktaVerifySSOExtensionView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/google-authenticator/EnrollGoogleAuthenticatorBarcodeView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/google-authenticator/EnrollAuthenticatorManualSetupView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/google-authenticator/EnrollAuthenticatorGoogleAuthenticatorView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/google-authenticator/ChallengeGoogleAuthenticatorView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/on-prem/EnrollAuthenticatorOnPremView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/on-prem/ChallengeAuthenticatorOnPremView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/duo/BaseDuoAuthenticatorForm.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/duo/EnrollDuoAuthenticatorView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/duo/ChallengeDuoAuthenticatorView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/idp/BaseIdpAuthenticator.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/idp/AuthenticatorIdPVerifyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/idp/AuthenticatorIdPEnrollView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/custom-otp/ChallengeCustomOTPAuthenticatorView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/symantec/AuthenticatorSymantecView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/device/DeviceCodeActivateView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/piv/PIVHeader.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/piv/ChallengePIVView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/yubikey/AuthenticatorYubiKeyView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/custom-app/ChallengeCustomAppResendPushView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/custom-password/ReEnrollCustomPasswordExpiryView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/views/custom-password/ReEnrollCustomPasswordExpiryWarningView.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/view-builder/ViewFactory.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/ion/payloadTransformer.js","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/controllers/FormController.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/v2/WidgetRouter.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/router/default.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/widget/buildRenderOptions.js","webpack:///./node_modules/@okta/okta-signin-widget/src/models/Hooks.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/widget/OktaSignIn.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/exports/default.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/widget/getAuthClient.ts","webpack:///./node_modules/@okta/okta-signin-widget/src/widget/createRouter.js","webpack:///./node_modules/@sindresorhus/to-milliseconds/index.js","webpack:///./node_modules/clipboard/lib/clipboard-action.js","webpack:///./node_modules/clipboard/lib/clipboard.js","webpack:///./node_modules/clipboard/node_modules/tiny-emitter/index.js","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/delegate/src/closest.js","webpack:///./node_modules/delegate/src/delegate.js","webpack:///./node_modules/good-listener/src/is.js","webpack:///./node_modules/good-listener/src/listen.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/parse-ms/index.js","webpack:///./node_modules/q/q.js","webpack:///./node_modules/select/src/select.js","webpack:///./node_modules/u2f-api-polyfill/u2f-api-polyfill.js"],"sourcesContent":["// OIE supports only IDX pipeline\nimport {\n createOktaAuthOAuth,\n mixinIdx,\n IdxTransactionMeta,\n IdxStorageManagerInterface,\n createIdxStorageManager,\n createIdxOptionsConstructor,\n OktaAuthIdxOptions,\n IdxTransactionManagerInterface,\n createIdxTransactionManager\n} from '@okta/okta-auth-js';\n\n// okta-auth-js supports a mixin pattern that allows us to compose a custom version containing only the code we need\n// build an AuthJS client that supports only the OIE engine\n\ntype M = IdxTransactionMeta;\ntype S = IdxStorageManagerInterface;\ntype O = OktaAuthIdxOptions;\ntype TM = IdxTransactionManagerInterface;\n\nconst OptionsConstructor = createIdxOptionsConstructor();\nconst StorageManager = createIdxStorageManager();\nconst IdxTransactionManager = createIdxTransactionManager();\n\n// Start with OAuth as base\nconst OktaAuthOAuth = createOktaAuthOAuth(StorageManager, OptionsConstructor, IdxTransactionManager);\n\n// Mixin IDX support\nconst OktaAuth = mixinIdx(OktaAuthOAuth);\n\nexport { OktaAuth };\n","// Default supports both Authn and IDX pipelines\nimport { mixinAuthn } from '@okta/okta-auth-js';\nimport { OktaAuth as OktaAuthIdx } from './oie';\n\n// okta-auth-js supports a mixin pattern that allows us to compose a custom version containing only the code we need\n// build an AuthJS client that supports both the Classic and OIE engines\n\n// Simply add Authn support to the IDX client\nconst OktaAuth = mixinAuthn(OktaAuthIdx);\n\nexport { OktaAuth };\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nexport { commonjsGlobal, getDefaultExportFromCjs };\n","var handlebars_runtime = {exports: {}};\n\nexport { handlebars_runtime as h };\n","var base = {};\n\nexport { base as __exports };\n","var utils = {};\n\nexport { utils as __exports };\n","import { __exports as utils } from '../../../../../_virtual/utils.js';\nexport { __exports as default } from '../../../../../_virtual/utils.js';\n\nutils.__esModule = true;\nutils.extend = extend;\nutils.indexOf = indexOf;\nutils.escapeExpression = escapeExpression;\nutils.isEmpty = isEmpty;\nutils.createFrame = createFrame;\nutils.blockParams = blockParams;\nutils.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj\n/* , ...source */\n) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\nutils.toString = toString; // Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n\n/* eslint-disable func-style */\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n}; // fallback for older versions of Chrome and Safari\n\n/* istanbul ignore next */\n\n\nif (isFunction(/x/)) {\n utils.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\n\nutils.isFunction = isFunction;\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\n\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nutils.isArray = isArray; // Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n } // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n\n\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n","var exception = {exports: {}};\n\nexport { exception as e };\n","import { e as exception } from '../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message); // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n /* istanbul ignore else */\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber; // Work around issue under safari where we can't directly set the column value\n\n /* istanbul ignore next */\n\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n}(exception, exception.exports));\n","var helpers = {};\n\nexport { helpers as __exports };\n","var blockHelperMissing = {exports: {}};\n\nexport { blockHelperMissing as b };\n","import { b as blockHelperMissing } from '../../../../../../_virtual/block-helper-missing.js';\nimport '../utils.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _utils = utils;\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = {\n data: data\n };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n}(blockHelperMissing, blockHelperMissing.exports));\n","var each = {exports: {}};\n\nexport { each as e };\n","import { commonjsGlobal } from '../../../../../../_virtual/_commonjsHelpers.js';\nimport { e as each } from '../../../../../../_virtual/each.js';\nimport '../utils.js';\nimport '../exception.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (commonjsGlobal.Symbol && context[commonjsGlobal.Symbol.iterator]) {\n var newContext = [];\n var iterator = context[commonjsGlobal.Symbol.iterator]();\n\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n\n context = newContext;\n\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n\n priorKey = key;\n i++;\n });\n\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n}(each, each.exports));\n","var helperMissing = {exports: {}};\n\nexport { helperMissing as h };\n","import { h as helperMissing } from '../../../../../../_virtual/helper-missing.js';\nimport '../exception.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function ()\n /* [args, ]options */\n {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n}(helperMissing, helperMissing.exports));\n","var _if = {exports: {}};\n\nexport { _if as _ };\n","import { _ as _if } from '../../../../../../_virtual/if.js';\nimport '../utils.js';\nimport '../exception.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n } // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n\n\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n}(_if, _if.exports));\n","var log = {exports: {}};\n\nexport { log as l };\n","import { l as log } from '../../../../../../_virtual/log.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function ()\n /* message, options */\n {\n var args = [undefined],\n options = arguments[arguments.length - 1];\n\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n\n args[0] = level;\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n}(log, log.exports));\n","var lookup = {exports: {}};\n\nexport { lookup as l };\n","import { l as lookup } from '../../../../../../_virtual/lookup.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n}(lookup, lookup.exports));\n","var _with = {exports: {}};\n\nexport { _with as _ };\n","import { __exports as helpers } from '../../../../../_virtual/helpers.js';\nexport { __exports as default } from '../../../../../_virtual/helpers.js';\nimport './helpers/block-helper-missing.js';\nimport './helpers/each.js';\nimport './helpers/helper-missing.js';\nimport './helpers/if.js';\nimport './helpers/log.js';\nimport './helpers/lookup.js';\nimport './helpers/with.js';\nimport { e as each } from '../../../../../_virtual/each.js';\nimport { h as helperMissing } from '../../../../../_virtual/helper-missing.js';\nimport { _ as _if } from '../../../../../_virtual/if.js';\nimport { l as log } from '../../../../../_virtual/log.js';\nimport { l as lookup } from '../../../../../_virtual/lookup.js';\nimport { _ as _with } from '../../../../../_virtual/with.js';\nimport { b as blockHelperMissing } from '../../../../../_virtual/block-helper-missing.js';\n\nhelpers.__esModule = true;\nhelpers.registerDefaultHelpers = registerDefaultHelpers;\nhelpers.moveHelperToHooks = moveHelperToHooks; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _helpersBlockHelperMissing = blockHelperMissing.exports;\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = each.exports;\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = helperMissing.exports;\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = _if.exports;\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = log.exports;\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = lookup.exports;\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = _with.exports;\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n\n _helpersEach2['default'](instance);\n\n _helpersHelperMissing2['default'](instance);\n\n _helpersIf2['default'](instance);\n\n _helpersLog2['default'](instance);\n\n _helpersLookup2['default'](instance);\n\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n","import { _ as _with } from '../../../../../../_virtual/with.js';\nimport '../utils.js';\nimport '../exception.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\nimport { e as exception } from '../../../../../../_virtual/exception.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n}(_with, _with.exports));\n","var decorators = {};\n\nexport { decorators as __exports };\n","var inline = {exports: {}};\n\nexport { inline as i };\n","import { i as inline } from '../../../../../../_virtual/inline.js';\nimport '../utils.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _utils = utils;\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n\n if (!props.partials) {\n props.partials = {};\n\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n}(inline, inline.exports));\n","import { __exports as decorators } from '../../../../../_virtual/decorators.js';\nexport { __exports as default } from '../../../../../_virtual/decorators.js';\nimport './decorators/inline.js';\nimport { i as inline } from '../../../../../_virtual/inline.js';\n\ndecorators.__esModule = true;\ndecorators.registerDefaultDecorators = registerDefaultDecorators; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _decoratorsInline = inline.exports;\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n","var logger = {exports: {}};\n\nexport { logger as l };\n","import { l as logger } from '../../../../../_virtual/logger.js';\nimport './utils.js';\nimport { __exports as utils } from '../../../../../_virtual/utils.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _utils = utils;\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level]; // eslint-disable-next-line no-console\n\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\nexports['default'] = logger;\nmodule.exports = exports['default'];\n}(logger, logger.exports));\n","var protoAccess = {};\n\nexport { protoAccess as __exports };\n","var createNewLookupObject = {};\n\nexport { createNewLookupObject as __exports };\n","import { __exports as createNewLookupObject$1 } from '../../../../../../_virtual/create-new-lookup-object.js';\nexport { __exports as default } from '../../../../../../_virtual/create-new-lookup-object.js';\nimport '../utils.js';\nimport { __exports as utils } from '../../../../../../_virtual/utils.js';\n\ncreateNewLookupObject$1.__esModule = true;\ncreateNewLookupObject$1.createNewLookupObject = createNewLookupObject;\n\nvar _utils = utils;\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n","import { __exports as protoAccess } from '../../../../../../_virtual/proto-access.js';\nexport { __exports as default } from '../../../../../../_virtual/proto-access.js';\nimport './create-new-lookup-object.js';\nimport '../logger.js';\nimport { __exports as createNewLookupObject } from '../../../../../../_virtual/create-new-lookup-object.js';\nimport { l as logger$1 } from '../../../../../../_virtual/logger.js';\n\nprotoAccess.__esModule = true;\nprotoAccess.createProtoAccessControl = createProtoAccessControl;\nprotoAccess.resultIsAllowed = resultIsAllowed;\nprotoAccess.resetLoggedProperties = resetLoggedProperties; // istanbul ignore next\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj['default'] = obj;\n return newObj;\n }\n}\n\nvar _createNewLookupObject = createNewLookupObject;\n\nvar _logger = logger$1.exports;\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n var defaultPropertyWhiteList = Object.create(null); // eslint-disable-next-line no-proto\n\n defaultPropertyWhiteList['__proto__'] = false;\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n","import { __exports as base } from '../../../../../_virtual/base.js';\nexport { __exports as default } from '../../../../../_virtual/base.js';\nimport './utils.js';\nimport './exception.js';\nimport './helpers.js';\nimport './decorators.js';\nimport './logger.js';\nimport './internal/proto-access.js';\nimport { __exports as utils } from '../../../../../_virtual/utils.js';\nimport { __exports as protoAccess } from '../../../../../_virtual/proto-access.js';\nimport { __exports as helpers } from '../../../../../_virtual/helpers.js';\nimport { __exports as decorators } from '../../../../../_virtual/decorators.js';\nimport { l as logger } from '../../../../../_virtual/logger.js';\nimport { e as exception } from '../../../../../_virtual/exception.js';\n\nbase.__esModule = true;\nbase.HandlebarsEnvironment = HandlebarsEnvironment; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar _utils = utils;\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = helpers;\n\nvar _decorators = decorators;\n\nvar _logger = logger.exports;\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = protoAccess;\n\nvar VERSION = '4.7.7';\nbase.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nbase.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\nbase.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2',\n // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\nbase.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n logger: _logger2['default'],\n log: _logger2['default'].log,\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\nvar log = _logger2['default'].log;\nbase.log = log;\nbase.createFrame = _utils.createFrame;\nbase.logger = _logger2['default'];\n","var safeString = {exports: {}};\n\nexport { safeString as s };\n","import { s as safeString } from '../../../../../_virtual/safe-string.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n}(safeString, safeString.exports));\n","var runtime = {};\n\nexport { runtime as __exports };\n","var wrapHelper = {};\n\nexport { wrapHelper as __exports };\n","import { __exports as wrapHelper$1 } from '../../../../../../_virtual/wrapHelper.js';\nexport { __exports as default } from '../../../../../../_virtual/wrapHelper.js';\n\nwrapHelper$1.__esModule = true;\nwrapHelper$1.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n\n var wrapper = function wrapper()\n /* dynamic arguments */\n {\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n\n return wrapper;\n}\n","import { __exports as runtime } from '../../../../../_virtual/runtime.js';\nexport { __exports as default } from '../../../../../_virtual/runtime.js';\nimport './utils.js';\nimport './exception.js';\nimport './base.js';\nimport './helpers.js';\nimport './internal/wrapHelper.js';\nimport './internal/proto-access.js';\nimport { __exports as utils } from '../../../../../_virtual/utils.js';\nimport { __exports as base } from '../../../../../_virtual/base.js';\nimport { __exports as protoAccess } from '../../../../../_virtual/proto-access.js';\nimport { __exports as helpers } from '../../../../../_virtual/helpers.js';\nimport { __exports as wrapHelper } from '../../../../../_virtual/wrapHelper.js';\nimport { e as exception } from '../../../../../_virtual/exception.js';\n\nruntime.__esModule = true;\nruntime.checkRevision = checkRevision;\nruntime.template = template;\nruntime.wrapProgram = wrapProgram;\nruntime.resolvePartial = resolvePartial;\nruntime.invokePartial = invokePartial;\nruntime.noop = noop; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n} // istanbul ignore next\n\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj['default'] = obj;\n return newObj;\n }\n}\n\nvar _utils = utils;\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = exception.exports;\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = base;\n\nvar _helpers = helpers;\n\nvar _internalWrapHelper = wrapHelper;\n\nvar _internalProtoAccess = protoAccess;\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d; // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n\n env.VM.checkRevision(templateSpec.compiler); // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n\n result = lines.join('\\n');\n }\n\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n } // Just add water\n\n\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n\n if (result == null) {\n return result;\n }\n\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n\n return programWrapper;\n },\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var data = options.data;\n\n ret._setup(options);\n\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context\n /*, options*/\n ) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var currentDepths = depths;\n\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data); // Wrapper function to get access to currentPartialBlock from the closure\n\n var fn = options.fn;\n\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({\n lookupProperty: lookupProperty\n }, options);\n });\n}\n","var noConflict = {exports: {}};\n\nexport { noConflict as n };\n","import { commonjsGlobal } from '../../../../../_virtual/_commonjsHelpers.js';\nimport { n as noConflict } from '../../../../../_virtual/no-conflict.js';\n\n(function (module, exports) {\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n}(noConflict, noConflict.exports));\n","import { getDefaultExportFromCjs } from '../../../../_virtual/_commonjsHelpers.js';\nimport { h as handlebars_runtime } from '../../../../_virtual/handlebars.runtime.js';\nimport './handlebars/base.js';\nimport './handlebars/safe-string.js';\nimport './handlebars/exception.js';\nimport './handlebars/utils.js';\nimport './handlebars/runtime.js';\nimport './handlebars/no-conflict.js';\nimport { __exports as base } from '../../../../_virtual/base.js';\nimport { __exports as utils } from '../../../../_virtual/utils.js';\nimport { __exports as runtime } from '../../../../_virtual/runtime.js';\nimport { e as exception } from '../../../../_virtual/exception.js';\nimport { n as noConflict } from '../../../../_virtual/no-conflict.js';\nimport { s as safeString } from '../../../../_virtual/safe-string.js';\n\n(function (module, exports) {\n\nexports.__esModule = true; // istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n} // istanbul ignore next\n\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj['default'] = obj;\n return newObj;\n }\n}\n\nvar _handlebarsBase = base;\n\nvar base$1 = _interopRequireWildcard(_handlebarsBase); // Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\n\nvar _handlebarsSafeString = safeString.exports;\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = exception.exports;\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = utils;\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = runtime;\n\nvar runtime$1 = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = noConflict.exports;\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); // For compatibility and usage outside of module systems, make the Handlebars object a namespace\n\n\nfunction create() {\n var hb = new base$1.HandlebarsEnvironment();\n Utils.extend(hb, base$1);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n hb.VM = runtime$1;\n\n hb.template = function (spec) {\n return runtime$1.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\nexports['default'] = inst;\nmodule.exports = exports['default'];\n}(handlebars_runtime, handlebars_runtime.exports));\n\nvar _Handlebars2 = /*@__PURE__*/getDefaultExportFromCjs(handlebars_runtime.exports);\n\nexport { _Handlebars2 as default };\n","var underscoreMin = {exports: {}};\n\nexport { underscoreMin as u };\n","import { commonjsGlobal } from '../../_virtual/_commonjsHelpers.js';\nimport { u as underscoreMin } from '../../_virtual/underscore-min.js';\n\n(function (module, exports) {\n!function (n, r) {\n module.exports = r() ;\n}(commonjsGlobal, function () {\n // Underscore.js 1.13.1\n // https://underscorejs.org\n // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n var n = \"1.13.1\",\n r = \"object\" == typeof self && self.self === self && self || \"object\" == typeof commonjsGlobal && commonjsGlobal.global === commonjsGlobal && commonjsGlobal || Function(\"return this\")() || {},\n t = Array.prototype,\n e = Object.prototype,\n u = \"undefined\" != typeof Symbol ? Symbol.prototype : null,\n o = t.push,\n i = t.slice,\n a = e.toString,\n f = e.hasOwnProperty,\n c = \"undefined\" != typeof ArrayBuffer,\n l = \"undefined\" != typeof DataView,\n s = Array.isArray,\n p = Object.keys,\n v = Object.create,\n h = c && ArrayBuffer.isView,\n y = isNaN,\n d = isFinite,\n g = !{\n toString: null\n }.propertyIsEnumerable(\"toString\"),\n b = [\"valueOf\", \"isPrototypeOf\", \"toString\", \"propertyIsEnumerable\", \"hasOwnProperty\", \"toLocaleString\"],\n m = Math.pow(2, 53) - 1;\n\n function j(n, r) {\n return r = null == r ? n.length - 1 : +r, function () {\n for (var t = Math.max(arguments.length - r, 0), e = Array(t), u = 0; u < t; u++) e[u] = arguments[u + r];\n\n switch (r) {\n case 0:\n return n.call(this, e);\n\n case 1:\n return n.call(this, arguments[0], e);\n\n case 2:\n return n.call(this, arguments[0], arguments[1], e);\n }\n\n var o = Array(r + 1);\n\n for (u = 0; u < r; u++) o[u] = arguments[u];\n\n return o[r] = e, n.apply(this, o);\n };\n }\n\n function _(n) {\n var r = typeof n;\n return \"function\" === r || \"object\" === r && !!n;\n }\n\n function w(n) {\n return void 0 === n;\n }\n\n function A(n) {\n return !0 === n || !1 === n || \"[object Boolean]\" === a.call(n);\n }\n\n function x(n) {\n var r = \"[object \" + n + \"]\";\n return function (n) {\n return a.call(n) === r;\n };\n }\n\n var S = x(\"String\"),\n O = x(\"Number\"),\n M = x(\"Date\"),\n E = x(\"RegExp\"),\n B = x(\"Error\"),\n N = x(\"Symbol\"),\n I = x(\"ArrayBuffer\"),\n T = x(\"Function\"),\n k = r.document && r.document.childNodes;\n \"function\" != typeof /./ && \"object\" != typeof Int8Array && \"function\" != typeof k && (T = function (n) {\n return \"function\" == typeof n || !1;\n });\n var D = T,\n R = x(\"Object\"),\n F = l && R(new DataView(new ArrayBuffer(8))),\n V = \"undefined\" != typeof Map && R(new Map()),\n P = x(\"DataView\");\n var q = F ? function (n) {\n return null != n && D(n.getInt8) && I(n.buffer);\n } : P,\n U = s || x(\"Array\");\n\n function W(n, r) {\n return null != n && f.call(n, r);\n }\n\n var z = x(\"Arguments\");\n !function () {\n z(arguments) || (z = function (n) {\n return W(n, \"callee\");\n });\n }();\n var L = z;\n\n function $(n) {\n return O(n) && y(n);\n }\n\n function C(n) {\n return function () {\n return n;\n };\n }\n\n function K(n) {\n return function (r) {\n var t = n(r);\n return \"number\" == typeof t && t >= 0 && t <= m;\n };\n }\n\n function J(n) {\n return function (r) {\n return null == r ? void 0 : r[n];\n };\n }\n\n var G = J(\"byteLength\"),\n H = K(G),\n Q = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\n var X = c ? function (n) {\n return h ? h(n) && !q(n) : H(n) && Q.test(a.call(n));\n } : C(!1),\n Y = J(\"length\");\n\n function Z(n, r) {\n r = function (n) {\n for (var r = {}, t = n.length, e = 0; e < t; ++e) r[n[e]] = !0;\n\n return {\n contains: function (n) {\n return r[n];\n },\n push: function (t) {\n return r[t] = !0, n.push(t);\n }\n };\n }(r);\n\n var t = b.length,\n u = n.constructor,\n o = D(u) && u.prototype || e,\n i = \"constructor\";\n\n for (W(n, i) && !r.contains(i) && r.push(i); t--;) (i = b[t]) in n && n[i] !== o[i] && !r.contains(i) && r.push(i);\n }\n\n function nn(n) {\n if (!_(n)) return [];\n if (p) return p(n);\n var r = [];\n\n for (var t in n) W(n, t) && r.push(t);\n\n return g && Z(n, r), r;\n }\n\n function rn(n, r) {\n var t = nn(r),\n e = t.length;\n if (null == n) return !e;\n\n for (var u = Object(n), o = 0; o < e; o++) {\n var i = t[o];\n if (r[i] !== u[i] || !(i in u)) return !1;\n }\n\n return !0;\n }\n\n function tn(n) {\n return n instanceof tn ? n : this instanceof tn ? void (this._wrapped = n) : new tn(n);\n }\n\n function en(n) {\n return new Uint8Array(n.buffer || n, n.byteOffset || 0, G(n));\n }\n\n tn.VERSION = n, tn.prototype.value = function () {\n return this._wrapped;\n }, tn.prototype.valueOf = tn.prototype.toJSON = tn.prototype.value, tn.prototype.toString = function () {\n return String(this._wrapped);\n };\n var un = \"[object DataView]\";\n\n function on(n, r, t, e) {\n if (n === r) return 0 !== n || 1 / n == 1 / r;\n if (null == n || null == r) return !1;\n if (n != n) return r != r;\n var o = typeof n;\n return (\"function\" === o || \"object\" === o || \"object\" == typeof r) && function n(r, t, e, o) {\n r instanceof tn && (r = r._wrapped);\n t instanceof tn && (t = t._wrapped);\n var i = a.call(r);\n if (i !== a.call(t)) return !1;\n\n if (F && \"[object Object]\" == i && q(r)) {\n if (!q(t)) return !1;\n i = un;\n }\n\n switch (i) {\n case \"[object RegExp]\":\n case \"[object String]\":\n return \"\" + r == \"\" + t;\n\n case \"[object Number]\":\n return +r != +r ? +t != +t : 0 == +r ? 1 / +r == 1 / t : +r == +t;\n\n case \"[object Date]\":\n case \"[object Boolean]\":\n return +r == +t;\n\n case \"[object Symbol]\":\n return u.valueOf.call(r) === u.valueOf.call(t);\n\n case \"[object ArrayBuffer]\":\n case un:\n return n(en(r), en(t), e, o);\n }\n\n var f = \"[object Array]\" === i;\n\n if (!f && X(r)) {\n if (G(r) !== G(t)) return !1;\n if (r.buffer === t.buffer && r.byteOffset === t.byteOffset) return !0;\n f = !0;\n }\n\n if (!f) {\n if (\"object\" != typeof r || \"object\" != typeof t) return !1;\n var c = r.constructor,\n l = t.constructor;\n if (c !== l && !(D(c) && c instanceof c && D(l) && l instanceof l) && \"constructor\" in r && \"constructor\" in t) return !1;\n }\n\n o = o || [];\n var s = (e = e || []).length;\n\n for (; s--;) if (e[s] === r) return o[s] === t;\n\n if (e.push(r), o.push(t), f) {\n if ((s = r.length) !== t.length) return !1;\n\n for (; s--;) if (!on(r[s], t[s], e, o)) return !1;\n } else {\n var p,\n v = nn(r);\n if (s = v.length, nn(t).length !== s) return !1;\n\n for (; s--;) if (p = v[s], !W(t, p) || !on(r[p], t[p], e, o)) return !1;\n }\n\n return e.pop(), o.pop(), !0;\n }(n, r, t, e);\n }\n\n function an(n) {\n if (!_(n)) return [];\n var r = [];\n\n for (var t in n) r.push(t);\n\n return g && Z(n, r), r;\n }\n\n function fn(n) {\n var r = Y(n);\n return function (t) {\n if (null == t) return !1;\n var e = an(t);\n if (Y(e)) return !1;\n\n for (var u = 0; u < r; u++) if (!D(t[n[u]])) return !1;\n\n return n !== hn || !D(t[cn]);\n };\n }\n\n var cn = \"forEach\",\n ln = \"has\",\n sn = [\"clear\", \"delete\"],\n pn = [\"get\", ln, \"set\"],\n vn = sn.concat(cn, pn),\n hn = sn.concat(pn),\n yn = [\"add\"].concat(sn, cn, ln),\n dn = V ? fn(vn) : x(\"Map\"),\n gn = V ? fn(hn) : x(\"WeakMap\"),\n bn = V ? fn(yn) : x(\"Set\"),\n mn = x(\"WeakSet\");\n\n function jn(n) {\n for (var r = nn(n), t = r.length, e = Array(t), u = 0; u < t; u++) e[u] = n[r[u]];\n\n return e;\n }\n\n function _n(n) {\n for (var r = {}, t = nn(n), e = 0, u = t.length; e < u; e++) r[n[t[e]]] = t[e];\n\n return r;\n }\n\n function wn(n) {\n var r = [];\n\n for (var t in n) D(n[t]) && r.push(t);\n\n return r.sort();\n }\n\n function An(n, r) {\n return function (t) {\n var e = arguments.length;\n if (r && (t = Object(t)), e < 2 || null == t) return t;\n\n for (var u = 1; u < e; u++) for (var o = arguments[u], i = n(o), a = i.length, f = 0; f < a; f++) {\n var c = i[f];\n r && void 0 !== t[c] || (t[c] = o[c]);\n }\n\n return t;\n };\n }\n\n var xn = An(an),\n Sn = An(nn),\n On = An(an, !0);\n\n function Mn(n) {\n if (!_(n)) return {};\n if (v) return v(n);\n\n var r = function () {};\n\n r.prototype = n;\n var t = new r();\n return r.prototype = null, t;\n }\n\n function En(n) {\n return _(n) ? U(n) ? n.slice() : xn({}, n) : n;\n }\n\n function Bn(n) {\n return U(n) ? n : [n];\n }\n\n function Nn(n) {\n return tn.toPath(n);\n }\n\n function In(n, r) {\n for (var t = r.length, e = 0; e < t; e++) {\n if (null == n) return;\n n = n[r[e]];\n }\n\n return t ? n : void 0;\n }\n\n function Tn(n, r, t) {\n var e = In(n, Nn(r));\n return w(e) ? t : e;\n }\n\n function kn(n) {\n return n;\n }\n\n function Dn(n) {\n return n = Sn({}, n), function (r) {\n return rn(r, n);\n };\n }\n\n function Rn(n) {\n return n = Nn(n), function (r) {\n return In(r, n);\n };\n }\n\n function Fn(n, r, t) {\n if (void 0 === r) return n;\n\n switch (null == t ? 3 : t) {\n case 1:\n return function (t) {\n return n.call(r, t);\n };\n\n case 3:\n return function (t, e, u) {\n return n.call(r, t, e, u);\n };\n\n case 4:\n return function (t, e, u, o) {\n return n.call(r, t, e, u, o);\n };\n }\n\n return function () {\n return n.apply(r, arguments);\n };\n }\n\n function Vn(n, r, t) {\n return null == n ? kn : D(n) ? Fn(n, r, t) : _(n) && !U(n) ? Dn(n) : Rn(n);\n }\n\n function Pn(n, r) {\n return Vn(n, r, 1 / 0);\n }\n\n function qn(n, r, t) {\n return tn.iteratee !== Pn ? tn.iteratee(n, r) : Vn(n, r, t);\n }\n\n function Un() {}\n\n function Wn(n, r) {\n return null == r && (r = n, n = 0), n + Math.floor(Math.random() * (r - n + 1));\n }\n\n tn.toPath = Bn, tn.iteratee = Pn;\n\n var zn = Date.now || function () {\n return new Date().getTime();\n };\n\n function Ln(n) {\n var r = function (r) {\n return n[r];\n },\n t = \"(?:\" + nn(n).join(\"|\") + \")\",\n e = RegExp(t),\n u = RegExp(t, \"g\");\n\n return function (n) {\n return n = null == n ? \"\" : \"\" + n, e.test(n) ? n.replace(u, r) : n;\n };\n }\n\n var $n = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"`\": \"`\"\n },\n Cn = Ln($n),\n Kn = Ln(_n($n)),\n Jn = tn.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n },\n Gn = /(.)^/,\n Hn = {\n \"'\": \"'\",\n \"\\\\\": \"\\\\\",\n \"\\r\": \"r\",\n \"\\n\": \"n\",\n \"\\u2028\": \"u2028\",\n \"\\u2029\": \"u2029\"\n },\n Qn = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n function Xn(n) {\n return \"\\\\\" + Hn[n];\n }\n\n var Yn = /^\\s*(\\w|\\$)+\\s*$/;\n var Zn = 0;\n\n function nr(n, r, t, e, u) {\n if (!(e instanceof r)) return n.apply(t, u);\n var o = Mn(n.prototype),\n i = n.apply(o, u);\n return _(i) ? i : o;\n }\n\n var rr = j(function (n, r) {\n var t = rr.placeholder,\n e = function () {\n for (var u = 0, o = r.length, i = Array(o), a = 0; a < o; a++) i[a] = r[a] === t ? arguments[u++] : r[a];\n\n for (; u < arguments.length;) i.push(arguments[u++]);\n\n return nr(n, e, this, this, i);\n };\n\n return e;\n });\n rr.placeholder = tn;\n var tr = j(function (n, r, t) {\n if (!D(n)) throw new TypeError(\"Bind must be called on a function\");\n var e = j(function (u) {\n return nr(n, e, r, this, t.concat(u));\n });\n return e;\n }),\n er = K(Y);\n\n function ur(n, r, t, e) {\n if (e = e || [], r || 0 === r) {\n if (r <= 0) return e.concat(n);\n } else r = 1 / 0;\n\n for (var u = e.length, o = 0, i = Y(n); o < i; o++) {\n var a = n[o];\n if (er(a) && (U(a) || L(a))) {\n if (r > 1) ur(a, r - 1, t, e), u = e.length;else for (var f = 0, c = a.length; f < c;) e[u++] = a[f++];\n } else t || (e[u++] = a);\n }\n\n return e;\n }\n\n var or = j(function (n, r) {\n var t = (r = ur(r, !1, !1)).length;\n if (t < 1) throw new Error(\"bindAll must be passed function names\");\n\n for (; t--;) {\n var e = r[t];\n n[e] = tr(n[e], n);\n }\n\n return n;\n });\n var ir = j(function (n, r, t) {\n return setTimeout(function () {\n return n.apply(null, t);\n }, r);\n }),\n ar = rr(ir, tn, 1);\n\n function fr(n) {\n return function () {\n return !n.apply(this, arguments);\n };\n }\n\n function cr(n, r) {\n var t;\n return function () {\n return --n > 0 && (t = r.apply(this, arguments)), n <= 1 && (r = null), t;\n };\n }\n\n var lr = rr(cr, 2);\n\n function sr(n, r, t) {\n r = qn(r, t);\n\n for (var e, u = nn(n), o = 0, i = u.length; o < i; o++) if (r(n[e = u[o]], e, n)) return e;\n }\n\n function pr(n) {\n return function (r, t, e) {\n t = qn(t, e);\n\n for (var u = Y(r), o = n > 0 ? 0 : u - 1; o >= 0 && o < u; o += n) if (t(r[o], o, r)) return o;\n\n return -1;\n };\n }\n\n var vr = pr(1),\n hr = pr(-1);\n\n function yr(n, r, t, e) {\n for (var u = (t = qn(t, e, 1))(r), o = 0, i = Y(n); o < i;) {\n var a = Math.floor((o + i) / 2);\n t(n[a]) < u ? o = a + 1 : i = a;\n }\n\n return o;\n }\n\n function dr(n, r, t) {\n return function (e, u, o) {\n var a = 0,\n f = Y(e);\n if (\"number\" == typeof o) n > 0 ? a = o >= 0 ? o : Math.max(o + f, a) : f = o >= 0 ? Math.min(o + 1, f) : o + f + 1;else if (t && o && f) return e[o = t(e, u)] === u ? o : -1;\n if (u != u) return (o = r(i.call(e, a, f), $)) >= 0 ? o + a : -1;\n\n for (o = n > 0 ? a : f - 1; o >= 0 && o < f; o += n) if (e[o] === u) return o;\n\n return -1;\n };\n }\n\n var gr = dr(1, vr, yr),\n br = dr(-1, hr);\n\n function mr(n, r, t) {\n var e = (er(n) ? vr : sr)(n, r, t);\n if (void 0 !== e && -1 !== e) return n[e];\n }\n\n function jr(n, r, t) {\n var e, u;\n if (r = Fn(r, t), er(n)) for (e = 0, u = n.length; e < u; e++) r(n[e], e, n);else {\n var o = nn(n);\n\n for (e = 0, u = o.length; e < u; e++) r(n[o[e]], o[e], n);\n }\n return n;\n }\n\n function _r(n, r, t) {\n r = qn(r, t);\n\n for (var e = !er(n) && nn(n), u = (e || n).length, o = Array(u), i = 0; i < u; i++) {\n var a = e ? e[i] : i;\n o[i] = r(n[a], a, n);\n }\n\n return o;\n }\n\n function wr(n) {\n var r = function (r, t, e, u) {\n var o = !er(r) && nn(r),\n i = (o || r).length,\n a = n > 0 ? 0 : i - 1;\n\n for (u || (e = r[o ? o[a] : a], a += n); a >= 0 && a < i; a += n) {\n var f = o ? o[a] : a;\n e = t(e, r[f], f, r);\n }\n\n return e;\n };\n\n return function (n, t, e, u) {\n var o = arguments.length >= 3;\n return r(n, Fn(t, u, 4), e, o);\n };\n }\n\n var Ar = wr(1),\n xr = wr(-1);\n\n function Sr(n, r, t) {\n var e = [];\n return r = qn(r, t), jr(n, function (n, t, u) {\n r(n, t, u) && e.push(n);\n }), e;\n }\n\n function Or(n, r, t) {\n r = qn(r, t);\n\n for (var e = !er(n) && nn(n), u = (e || n).length, o = 0; o < u; o++) {\n var i = e ? e[o] : o;\n if (!r(n[i], i, n)) return !1;\n }\n\n return !0;\n }\n\n function Mr(n, r, t) {\n r = qn(r, t);\n\n for (var e = !er(n) && nn(n), u = (e || n).length, o = 0; o < u; o++) {\n var i = e ? e[o] : o;\n if (r(n[i], i, n)) return !0;\n }\n\n return !1;\n }\n\n function Er(n, r, t, e) {\n return er(n) || (n = jn(n)), (\"number\" != typeof t || e) && (t = 0), gr(n, r, t) >= 0;\n }\n\n var Br = j(function (n, r, t) {\n var e, u;\n return D(r) ? u = r : (r = Nn(r), e = r.slice(0, -1), r = r[r.length - 1]), _r(n, function (n) {\n var o = u;\n\n if (!o) {\n if (e && e.length && (n = In(n, e)), null == n) return;\n o = n[r];\n }\n\n return null == o ? o : o.apply(n, t);\n });\n });\n\n function Nr(n, r) {\n return _r(n, Rn(r));\n }\n\n function Ir(n, r, t) {\n var e,\n u,\n o = -1 / 0,\n i = -1 / 0;\n if (null == r || \"number\" == typeof r && \"object\" != typeof n[0] && null != n) for (var a = 0, f = (n = er(n) ? n : jn(n)).length; a < f; a++) null != (e = n[a]) && e > o && (o = e);else r = qn(r, t), jr(n, function (n, t, e) {\n ((u = r(n, t, e)) > i || u === -1 / 0 && o === -1 / 0) && (o = n, i = u);\n });\n return o;\n }\n\n function Tr(n, r, t) {\n if (null == r || t) return er(n) || (n = jn(n)), n[Wn(n.length - 1)];\n var e = er(n) ? En(n) : jn(n),\n u = Y(e);\n r = Math.max(Math.min(r, u), 0);\n\n for (var o = u - 1, i = 0; i < r; i++) {\n var a = Wn(i, o),\n f = e[i];\n e[i] = e[a], e[a] = f;\n }\n\n return e.slice(0, r);\n }\n\n function kr(n, r) {\n return function (t, e, u) {\n var o = r ? [[], []] : {};\n return e = qn(e, u), jr(t, function (r, u) {\n var i = e(r, u, t);\n n(o, r, i);\n }), o;\n };\n }\n\n var Dr = kr(function (n, r, t) {\n W(n, t) ? n[t].push(r) : n[t] = [r];\n }),\n Rr = kr(function (n, r, t) {\n n[t] = r;\n }),\n Fr = kr(function (n, r, t) {\n W(n, t) ? n[t]++ : n[t] = 1;\n }),\n Vr = kr(function (n, r, t) {\n n[t ? 0 : 1].push(r);\n }, !0),\n Pr = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n\n function qr(n, r, t) {\n return r in t;\n }\n\n var Ur = j(function (n, r) {\n var t = {},\n e = r[0];\n if (null == n) return t;\n D(e) ? (r.length > 1 && (e = Fn(e, r[1])), r = an(n)) : (e = qr, r = ur(r, !1, !1), n = Object(n));\n\n for (var u = 0, o = r.length; u < o; u++) {\n var i = r[u],\n a = n[i];\n e(a, i, n) && (t[i] = a);\n }\n\n return t;\n }),\n Wr = j(function (n, r) {\n var t,\n e = r[0];\n return D(e) ? (e = fr(e), r.length > 1 && (t = r[1])) : (r = _r(ur(r, !1, !1), String), e = function (n, t) {\n return !Er(r, t);\n }), Ur(n, e, t);\n });\n\n function zr(n, r, t) {\n return i.call(n, 0, Math.max(0, n.length - (null == r || t ? 1 : r)));\n }\n\n function Lr(n, r, t) {\n return null == n || n.length < 1 ? null == r || t ? void 0 : [] : null == r || t ? n[0] : zr(n, n.length - r);\n }\n\n function $r(n, r, t) {\n return i.call(n, null == r || t ? 1 : r);\n }\n\n var Cr = j(function (n, r) {\n return r = ur(r, !0, !0), Sr(n, function (n) {\n return !Er(r, n);\n });\n }),\n Kr = j(function (n, r) {\n return Cr(n, r);\n });\n\n function Jr(n, r, t, e) {\n A(r) || (e = t, t = r, r = !1), null != t && (t = qn(t, e));\n\n for (var u = [], o = [], i = 0, a = Y(n); i < a; i++) {\n var f = n[i],\n c = t ? t(f, i, n) : f;\n r && !t ? (i && o === c || u.push(f), o = c) : t ? Er(o, c) || (o.push(c), u.push(f)) : Er(u, f) || u.push(f);\n }\n\n return u;\n }\n\n var Gr = j(function (n) {\n return Jr(ur(n, !0, !0));\n });\n\n function Hr(n) {\n for (var r = n && Ir(n, Y).length || 0, t = Array(r), e = 0; e < r; e++) t[e] = Nr(n, e);\n\n return t;\n }\n\n var Qr = j(Hr);\n\n function Xr(n, r) {\n return n._chain ? tn(r).chain() : r;\n }\n\n function Yr(n) {\n return jr(wn(n), function (r) {\n var t = tn[r] = n[r];\n\n tn.prototype[r] = function () {\n var n = [this._wrapped];\n return o.apply(n, arguments), Xr(this, t.apply(tn, n));\n };\n }), tn;\n }\n\n jr([\"pop\", \"push\", \"reverse\", \"shift\", \"sort\", \"splice\", \"unshift\"], function (n) {\n var r = t[n];\n\n tn.prototype[n] = function () {\n var t = this._wrapped;\n return null != t && (r.apply(t, arguments), \"shift\" !== n && \"splice\" !== n || 0 !== t.length || delete t[0]), Xr(this, t);\n };\n }), jr([\"concat\", \"join\", \"slice\"], function (n) {\n var r = t[n];\n\n tn.prototype[n] = function () {\n var n = this._wrapped;\n return null != n && (n = r.apply(n, arguments)), Xr(this, n);\n };\n });\n var Zr = Yr({\n __proto__: null,\n VERSION: n,\n restArguments: j,\n isObject: _,\n isNull: function (n) {\n return null === n;\n },\n isUndefined: w,\n isBoolean: A,\n isElement: function (n) {\n return !(!n || 1 !== n.nodeType);\n },\n isString: S,\n isNumber: O,\n isDate: M,\n isRegExp: E,\n isError: B,\n isSymbol: N,\n isArrayBuffer: I,\n isDataView: q,\n isArray: U,\n isFunction: D,\n isArguments: L,\n isFinite: function (n) {\n return !N(n) && d(n) && !isNaN(parseFloat(n));\n },\n isNaN: $,\n isTypedArray: X,\n isEmpty: function (n) {\n if (null == n) return !0;\n var r = Y(n);\n return \"number\" == typeof r && (U(n) || S(n) || L(n)) ? 0 === r : 0 === Y(nn(n));\n },\n isMatch: rn,\n isEqual: function (n, r) {\n return on(n, r);\n },\n isMap: dn,\n isWeakMap: gn,\n isSet: bn,\n isWeakSet: mn,\n keys: nn,\n allKeys: an,\n values: jn,\n pairs: function (n) {\n for (var r = nn(n), t = r.length, e = Array(t), u = 0; u < t; u++) e[u] = [r[u], n[r[u]]];\n\n return e;\n },\n invert: _n,\n functions: wn,\n methods: wn,\n extend: xn,\n extendOwn: Sn,\n assign: Sn,\n defaults: On,\n create: function (n, r) {\n var t = Mn(n);\n return r && Sn(t, r), t;\n },\n clone: En,\n tap: function (n, r) {\n return r(n), n;\n },\n get: Tn,\n has: function (n, r) {\n for (var t = (r = Nn(r)).length, e = 0; e < t; e++) {\n var u = r[e];\n if (!W(n, u)) return !1;\n n = n[u];\n }\n\n return !!t;\n },\n mapObject: function (n, r, t) {\n r = qn(r, t);\n\n for (var e = nn(n), u = e.length, o = {}, i = 0; i < u; i++) {\n var a = e[i];\n o[a] = r(n[a], a, n);\n }\n\n return o;\n },\n identity: kn,\n constant: C,\n noop: Un,\n toPath: Bn,\n property: Rn,\n propertyOf: function (n) {\n return null == n ? Un : function (r) {\n return Tn(n, r);\n };\n },\n matcher: Dn,\n matches: Dn,\n times: function (n, r, t) {\n var e = Array(Math.max(0, n));\n r = Fn(r, t, 1);\n\n for (var u = 0; u < n; u++) e[u] = r(u);\n\n return e;\n },\n random: Wn,\n now: zn,\n escape: Cn,\n unescape: Kn,\n templateSettings: Jn,\n template: function (n, r, t) {\n !r && t && (r = t), r = On({}, r, tn.templateSettings);\n var e = RegExp([(r.escape || Gn).source, (r.interpolate || Gn).source, (r.evaluate || Gn).source].join(\"|\") + \"|$\", \"g\"),\n u = 0,\n o = \"__p+='\";\n n.replace(e, function (r, t, e, i, a) {\n return o += n.slice(u, a).replace(Qn, Xn), u = a + r.length, t ? o += \"'+\\n((__t=(\" + t + \"))==null?'':_.escape(__t))+\\n'\" : e ? o += \"'+\\n((__t=(\" + e + \"))==null?'':__t)+\\n'\" : i && (o += \"';\\n\" + i + \"\\n__p+='\"), r;\n }), o += \"';\\n\";\n var i,\n a = r.variable;\n\n if (a) {\n if (!Yn.test(a)) throw new Error(\"variable is not a bare identifier: \" + a);\n } else o = \"with(obj||{}){\\n\" + o + \"}\\n\", a = \"obj\";\n\n o = \"var __t,__p='',__j=Array.prototype.join,\" + \"print=function(){__p+=__j.call(arguments,'');};\\n\" + o + \"return __p;\\n\";\n\n try {\n i = new Function(a, \"_\", o);\n } catch (n) {\n throw n.source = o, n;\n }\n\n var f = function (n) {\n return i.call(this, n, tn);\n };\n\n return f.source = \"function(\" + a + \"){\\n\" + o + \"}\", f;\n },\n result: function (n, r, t) {\n var e = (r = Nn(r)).length;\n if (!e) return D(t) ? t.call(n) : t;\n\n for (var u = 0; u < e; u++) {\n var o = null == n ? void 0 : n[r[u]];\n void 0 === o && (o = t, u = e), n = D(o) ? o.call(n) : o;\n }\n\n return n;\n },\n uniqueId: function (n) {\n var r = ++Zn + \"\";\n return n ? n + r : r;\n },\n chain: function (n) {\n var r = tn(n);\n return r._chain = !0, r;\n },\n iteratee: Pn,\n partial: rr,\n bind: tr,\n bindAll: or,\n memoize: function (n, r) {\n var t = function (e) {\n var u = t.cache,\n o = \"\" + (r ? r.apply(this, arguments) : e);\n return W(u, o) || (u[o] = n.apply(this, arguments)), u[o];\n };\n\n return t.cache = {}, t;\n },\n delay: ir,\n defer: ar,\n throttle: function (n, r, t) {\n var e,\n u,\n o,\n i,\n a = 0;\n t || (t = {});\n\n var f = function () {\n a = !1 === t.leading ? 0 : zn(), e = null, i = n.apply(u, o), e || (u = o = null);\n },\n c = function () {\n var c = zn();\n a || !1 !== t.leading || (a = c);\n var l = r - (c - a);\n return u = this, o = arguments, l <= 0 || l > r ? (e && (clearTimeout(e), e = null), a = c, i = n.apply(u, o), e || (u = o = null)) : e || !1 === t.trailing || (e = setTimeout(f, l)), i;\n };\n\n return c.cancel = function () {\n clearTimeout(e), a = 0, e = u = o = null;\n }, c;\n },\n debounce: function (n, r, t) {\n var e,\n u,\n o,\n i,\n a,\n f = function () {\n var c = zn() - u;\n r > c ? e = setTimeout(f, r - c) : (e = null, t || (i = n.apply(a, o)), e || (o = a = null));\n },\n c = j(function (c) {\n return a = this, o = c, u = zn(), e || (e = setTimeout(f, r), t && (i = n.apply(a, o))), i;\n });\n\n return c.cancel = function () {\n clearTimeout(e), e = o = a = null;\n }, c;\n },\n wrap: function (n, r) {\n return rr(r, n);\n },\n negate: fr,\n compose: function () {\n var n = arguments,\n r = n.length - 1;\n return function () {\n for (var t = r, e = n[r].apply(this, arguments); t--;) e = n[t].call(this, e);\n\n return e;\n };\n },\n after: function (n, r) {\n return function () {\n if (--n < 1) return r.apply(this, arguments);\n };\n },\n before: cr,\n once: lr,\n findKey: sr,\n findIndex: vr,\n findLastIndex: hr,\n sortedIndex: yr,\n indexOf: gr,\n lastIndexOf: br,\n find: mr,\n detect: mr,\n findWhere: function (n, r) {\n return mr(n, Dn(r));\n },\n each: jr,\n forEach: jr,\n map: _r,\n collect: _r,\n reduce: Ar,\n foldl: Ar,\n inject: Ar,\n reduceRight: xr,\n foldr: xr,\n filter: Sr,\n select: Sr,\n reject: function (n, r, t) {\n return Sr(n, fr(qn(r)), t);\n },\n every: Or,\n all: Or,\n some: Mr,\n any: Mr,\n contains: Er,\n includes: Er,\n include: Er,\n invoke: Br,\n pluck: Nr,\n where: function (n, r) {\n return Sr(n, Dn(r));\n },\n max: Ir,\n min: function (n, r, t) {\n var e,\n u,\n o = 1 / 0,\n i = 1 / 0;\n if (null == r || \"number\" == typeof r && \"object\" != typeof n[0] && null != n) for (var a = 0, f = (n = er(n) ? n : jn(n)).length; a < f; a++) null != (e = n[a]) && e < o && (o = e);else r = qn(r, t), jr(n, function (n, t, e) {\n ((u = r(n, t, e)) < i || u === 1 / 0 && o === 1 / 0) && (o = n, i = u);\n });\n return o;\n },\n shuffle: function (n) {\n return Tr(n, 1 / 0);\n },\n sample: Tr,\n sortBy: function (n, r, t) {\n var e = 0;\n return r = qn(r, t), Nr(_r(n, function (n, t, u) {\n return {\n value: n,\n index: e++,\n criteria: r(n, t, u)\n };\n }).sort(function (n, r) {\n var t = n.criteria,\n e = r.criteria;\n\n if (t !== e) {\n if (t > e || void 0 === t) return 1;\n if (t < e || void 0 === e) return -1;\n }\n\n return n.index - r.index;\n }), \"value\");\n },\n groupBy: Dr,\n indexBy: Rr,\n countBy: Fr,\n partition: Vr,\n toArray: function (n) {\n return n ? U(n) ? i.call(n) : S(n) ? n.match(Pr) : er(n) ? _r(n, kn) : jn(n) : [];\n },\n size: function (n) {\n return null == n ? 0 : er(n) ? n.length : nn(n).length;\n },\n pick: Ur,\n omit: Wr,\n first: Lr,\n head: Lr,\n take: Lr,\n initial: zr,\n last: function (n, r, t) {\n return null == n || n.length < 1 ? null == r || t ? void 0 : [] : null == r || t ? n[n.length - 1] : $r(n, Math.max(0, n.length - r));\n },\n rest: $r,\n tail: $r,\n drop: $r,\n compact: function (n) {\n return Sr(n, Boolean);\n },\n flatten: function (n, r) {\n return ur(n, r, !1);\n },\n without: Kr,\n uniq: Jr,\n unique: Jr,\n union: Gr,\n intersection: function (n) {\n for (var r = [], t = arguments.length, e = 0, u = Y(n); e < u; e++) {\n var o = n[e];\n\n if (!Er(r, o)) {\n var i;\n\n for (i = 1; i < t && Er(arguments[i], o); i++);\n\n i === t && r.push(o);\n }\n }\n\n return r;\n },\n difference: Cr,\n unzip: Hr,\n transpose: Hr,\n zip: Qr,\n object: function (n, r) {\n for (var t = {}, e = 0, u = Y(n); e < u; e++) r ? t[n[e]] = r[e] : t[n[e][0]] = n[e][1];\n\n return t;\n },\n range: function (n, r, t) {\n null == r && (r = n || 0, n = 0), t || (t = r < n ? -1 : 1);\n\n for (var e = Math.max(Math.ceil((r - n) / t), 0), u = Array(e), o = 0; o < e; o++, n += t) u[o] = n;\n\n return u;\n },\n chunk: function (n, r) {\n if (null == r || r < 1) return [];\n\n for (var t = [], e = 0, u = n.length; e < u;) t.push(i.call(n, e, e += r));\n\n return t;\n },\n mixin: Yr,\n default: tn\n });\n return Zr._ = Zr, Zr;\n});\n}(underscoreMin));\n\nvar _ = underscoreMin.exports;\n\nexport { _ as default };\n","import _Handlebars2 from '../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport _ from '../../../lib/underscore/underscore-min.js';\n\n/* eslint @okta/okta-ui/no-specific-methods: 0, @okta/okta-ui/no-specific-modules: 0 */\n\n_.mixin({\n resultCtx: function (object, property, context, defaultValue) {\n let value = _.isObject(object) ? object[property] : void 0;\n\n if (_.isFunction(value)) {\n value = value.call(context || object);\n }\n\n if (value) {\n return value;\n } else {\n return !_.isUndefined(defaultValue) ? defaultValue : value;\n }\n },\n isInteger: function (x) {\n return _.isNumber(x) && x % 1 === 0;\n },\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n template: function (source, data) {\n const template = _Handlebars2.compile(source);\n\n if (data) {\n return template(data);\n }\n\n const fn = function (data) {\n return template(data);\n };\n\n fn.source = ''; // to conform with \"CompiledTemplate\" type definition\n\n return fn;\n }\n});\n\nconst oktaUnderscore = _;\n\nexport { oktaUnderscore as default };\n","var backbone = {exports: {}};\n\nexport { backbone as b };\n","import { commonjsGlobal } from '../../../../_virtual/_commonjsHelpers.js';\nimport { b as backbone } from '../../../../_virtual/backbone.js';\nimport $ from 'jquery';\nimport '../../../../lib/underscore/underscore-min.js';\nimport { u as underscoreMin } from '../../../../_virtual/underscore-min.js';\n\n(function (module, exports) {\n// Backbone.js 1.4.0\n// (c) 2010-2019 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\nconst jQuery = $;\n(function (factory) {\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self || typeof commonjsGlobal == 'object' && commonjsGlobal.global === commonjsGlobal && commonjsGlobal; // Set up Backbone appropriately for the environment. Start with AMD.\n\n {\n var _ = underscoreMin.exports,\n $;\n\n try {\n $ = jQuery;\n } catch (e) {}\n\n factory(root, exports, _, $); // Finally, as a browser global.\n }\n})(function (root, Backbone, _, $) {\n // Initial Setup\n // -------------\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone; // Create a local reference to a common array method we'll want to use later.\n\n var slice = Array.prototype.slice; // Current version of the library. Keep in sync with `package.json`.\n\n Backbone.VERSION = '1.4.0'; // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n\n Backbone.$ = $; // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n\n Backbone.noConflict = function () {\n root.Backbone = previousBackbone;\n return this;\n }; // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n\n\n Backbone.emulateHTTP = false; // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n\n Backbone.emulateJSON = false; // Backbone.Events\n // ---------------\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n\n var Events = Backbone.Events = {}; // Regular expression used to split event strings.\n\n var eventSplitter = /\\s+/; // A private global variable to share between listeners and listenees.\n\n var _listening; // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n\n\n var eventsApi = function (iteratee, events, name, callback, opts) {\n var i = 0,\n names;\n\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n\n for (names = _.keys(name); i < names.length; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n\n return events;\n }; // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n\n\n Events.on = function (name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening; // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n\n _listening.interop = false;\n }\n\n return this;\n }; // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n\n\n Events.listenTo = function (obj, name, callback) {\n if (!obj) return this;\n\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id]; // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n } // Bind callbacks on obj.\n\n\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n if (error) throw error; // If the target obj is not Backbone.Events, track events manually.\n\n if (listening.interop) listening.on(name, callback);\n return this;\n }; // The reducing API that adds a callback to the `events` object.\n\n\n var onApi = function (events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context,\n ctx = options.ctx,\n listening = options.listening;\n if (listening) listening.count++;\n handlers.push({\n callback: callback,\n context: context,\n ctx: context || ctx,\n listening: listening\n });\n }\n\n return events;\n }; // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n\n\n var tryCatchOn = function (obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n }; // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n\n\n Events.off = function (name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n }; // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n\n\n Events.stopListening = function (obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]]; // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n\n if (!listening) break;\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n return this;\n }; // The reducing API that removes a callback from the `events` object.\n\n\n var offApi = function (events, name, callback, options) {\n if (!events) return;\n var context = options.context,\n listeners = options.listeners;\n var i = 0,\n names; // Delete all event listeners and \"drop\" events.\n\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n\n return;\n }\n\n names = name ? [name] : _.keys(events);\n\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name]; // Bail out if there are no events stored.\n\n if (!handlers) break; // Find any remaining events.\n\n var remaining = [];\n\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n\n if (callback && callback !== handler.callback && callback !== handler.callback._callback || context && context !== handler.context) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n } // Replace events if there are any remaining. Otherwise, clean up.\n\n\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n }; // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n\n\n Events.once = function (name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n }; // Inversion-of-control versions of `once`.\n\n\n Events.listenToOnce = function (obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n }; // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n\n\n var onceMap = function (map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function () {\n offer(name, once);\n callback.apply(this, arguments);\n });\n\n once._callback = callback;\n }\n\n return map;\n }; // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n\n\n Events.trigger = function (name) {\n if (!this._events) return this;\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n }; // Handles triggering the appropriate event callbacks.\n\n\n var triggerApi = function (objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n\n return objEvents;\n }; // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n\n\n var triggerEvents = function (events, args) {\n var ev,\n i = -1,\n l = events.length,\n a1 = args[0],\n a2 = args[1],\n a3 = args[2];\n\n switch (args.length) {\n case 0:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx);\n\n return;\n\n case 1:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1);\n\n return;\n\n case 2:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2);\n\n return;\n\n case 3:\n while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3);\n\n return;\n\n default:\n while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);\n\n return;\n }\n }; // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n\n\n var Listening = function (listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on; // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n\n Listening.prototype.off = function (name, callback) {\n var cleanup;\n\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n\n if (cleanup) this.cleanup();\n }; // Cleans up memory bindings between the listener and the listenee.\n\n\n Listening.prototype.cleanup = function () {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n }; // Aliases for backwards compatibility.\n\n\n Events.bind = Events.on;\n Events.unbind = Events.off; // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n\n _.extend(Backbone, Events); // Backbone.Model\n // --------------\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n\n\n var Model = Backbone.Model = function (attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n\n var defaults = _.result(this, 'defaults');\n\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n }; // Attach all inheritable methods to the Model prototype.\n\n\n _.extend(Model.prototype, Events, {\n // A hash of attributes whose current and previous value differ.\n changed: null,\n // The value returned during the last failed validation.\n validationError: null,\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // Return a copy of the model's `attributes` object.\n toJSON: function (options) {\n return _.clone(this.attributes);\n },\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function () {\n return Backbone.sync.apply(this, arguments);\n },\n // Get the value of an attribute.\n get: function (attr) {\n return this.attributes[attr];\n },\n // Get the HTML-escaped value of an attribute.\n escape: function (attr) {\n return _.escape(this.get(attr));\n },\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function (attr) {\n return this.get(attr) != null;\n },\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function (attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function (key, val, options) {\n if (key == null) return this; // Handle both `\"key\", value` and `{key: value}` -style arguments.\n\n var attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {}); // Run validation.\n\n if (!this._validate(attrs, options)) return false; // Extract attributes and options.\n\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes; // For each `set` attribute, update or delete the current value.\n\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n\n unset ? delete current[attr] : current[attr] = val;\n } // Update the `id`.\n\n\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute); // Trigger all relevant attribute changes.\n\n if (!silent) {\n if (changes.length) this._pending = options;\n\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n } // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n\n\n if (changing) return this;\n\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n\n this._pending = false;\n this._changing = false;\n return this;\n },\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function (attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {\n unset: true\n }));\n },\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function (options) {\n var attrs = {};\n\n for (var key in this.attributes) attrs[key] = void 0;\n\n return this.set(attrs, _.extend({}, options, {\n unset: true\n }));\n },\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function (attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function (diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n\n return hasChanged ? changed : false;\n },\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function (attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function () {\n return _.clone(this._previousAttributes);\n },\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function (options) {\n options = _.extend({\n parse: true\n }, options);\n var model = this;\n var success = options.success;\n\n options.success = function (resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function (key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({\n validate: true,\n parse: true\n }, options);\n var wait = options.wait; // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n } // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n\n\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n\n options.success = function (resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n\n wrapError(this, options); // Set temporary attributes if `{wait: true}` to properly find new ids.\n\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options); // Restore attributes.\n\n this.attributes = attributes;\n return xhr;\n },\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function (options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function () {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function (resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n\n if (!wait) destroy();\n return xhr;\n },\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function () {\n var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url') || urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function (resp, options) {\n return resp;\n },\n // Create a new model with identical attributes to this one.\n clone: function () {\n return new this.constructor(this.attributes);\n },\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function () {\n return !this.has(this.idAttribute);\n },\n // Check if the model is currently in a valid state.\n isValid: function (options) {\n return this._validate({}, _.extend({}, options, {\n validate: true\n }));\n },\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function (attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {\n validationError: error\n }));\n return false;\n }\n }); // Backbone.Collection\n // -------------------\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n\n\n var Collection = Backbone.Collection = function (models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n\n this._reset();\n\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({\n silent: true\n }, options));\n }; // Default options for `Collection#set`.\n\n\n var setOptions = {\n add: true,\n remove: true,\n merge: true\n };\n var addOptions = {\n add: true,\n remove: false\n }; // Splices `insert` into `array` at index `at`.\n\n var splice = function (array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n }; // Define the Collection's inheritable methods.\n\n\n _.extend(Collection.prototype, Events, {\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function (options) {\n return this.map(function (model) {\n return model.toJSON(options);\n });\n },\n // Proxy `Backbone.sync` by default.\n sync: function () {\n return Backbone.sync.apply(this, arguments);\n },\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function (models, options) {\n return this.set(models, _.extend({\n merge: false\n }, options, addOptions));\n },\n // Remove a model, or a list of models from the set.\n remove: function (models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var removed = this._removeModels(models, options);\n\n if (!options.silent && removed.length) {\n options.changes = {\n added: [],\n merged: [],\n removed: removed\n };\n this.trigger('update', this, options);\n }\n\n return singular ? removed[0] : removed;\n },\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function (models, options) {\n if (models == null) return;\n options = _.extend({}, setOptions, options);\n\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null; // Turn bare objects into model references, and prevent invalid models\n // from being added.\n\n var model, i;\n\n for (i = 0; i < models.length; i++) {\n model = models[i]; // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n\n var existing = this.get(model);\n\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n\n models[i] = existing; // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n\n if (model) {\n toAdd.push(model);\n\n this._addReference(model, options);\n\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n } // Remove stale models.\n\n\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n\n if (toRemove.length) this._removeModels(toRemove, options);\n } // See if sorting is needed, update `length` and splice in new models.\n\n\n var orderChanged = false;\n var replace = !sortable && add && remove;\n\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function (m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n } // Silently sort the collection if appropriate.\n\n\n if (sort) this.sort({\n silent: true\n }); // Unless silenced, it's time to fire all appropriate add/sort/update events.\n\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n\n if (sort || orderChanged) this.trigger('sort', this, options);\n\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n } // Return the added (or merged) model (or models).\n\n\n return singular ? models[0] : models;\n },\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function (models, options) {\n options = options ? _.clone(options) : {};\n\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n\n options.previousModels = this.models;\n\n this._reset();\n\n models = this.add(models, _.extend({\n silent: true\n }, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n // Add a model to the end of the collection.\n push: function (model, options) {\n return this.add(model, _.extend({\n at: this.length\n }, options));\n },\n // Remove a model from the end of the collection.\n pop: function (options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n // Add a model to the beginning of the collection.\n unshift: function (model, options) {\n return this.add(model, _.extend({\n at: 0\n }, options));\n },\n // Remove a model from the beginning of the collection.\n shift: function (options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n // Slice out a sub-array of models from the collection.\n slice: function () {\n return slice.apply(this.models, arguments);\n },\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function (obj) {\n if (obj == null) return void 0;\n return this._byId[obj] || this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj)] || obj.cid && this._byId[obj.cid];\n },\n // Returns `true` if the model is in the collection.\n has: function (obj) {\n return this.get(obj) != null;\n },\n // Get the model at the given index.\n at: function (index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function (attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function (attrs) {\n return this.where(attrs, true);\n },\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function (options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this); // Run sort based on type of `comparator`.\n\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n // Pluck an attribute from each model in the collection.\n pluck: function (attr) {\n return this.map(attr + '');\n },\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function (options) {\n options = _.extend({\n parse: true\n }, options);\n var success = options.success;\n var collection = this;\n\n options.success = function (resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function (model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n\n options.success = function (m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n\n model.save(null, options);\n return model;\n },\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function (resp, options) {\n return resp;\n },\n // Create a new collection with an identical list of models as this one.\n clone: function () {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n // Define how to uniquely identify models in the collection.\n modelId: function (attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n // Get an iterator of all models in this collection.\n values: function () {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n // Get an iterator of all model IDs in this collection.\n keys: function () {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function () {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function () {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function (attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n // Internal method called by both remove and set.\n _removeModels: function (models, options) {\n var removed = [];\n\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--; // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n\n this._removeReference(model, options);\n }\n\n return removed;\n },\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function (model) {\n return model instanceof Model;\n },\n // Internal method to create a model's ties to a collection.\n _addReference: function (model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n // Internal method to sever a model's ties to a collection.\n _removeReference: function (model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function (event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n\n this.trigger.apply(this, arguments);\n }\n }); // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n\n /* global Symbol */\n\n\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n } // CollectionIterator\n // ------------------\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n\n\n var CollectionIterator = function (collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n }; // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n\n\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3; // All Iterators should themselves be Iterable.\n\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function () {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function () {\n if (this._collection) {\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n\n this._index++; // Construct a value depending on what kind of values should be iterated.\n\n var value;\n\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes);\n\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else {\n // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n\n return {\n value: value,\n done: false\n };\n } // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n\n\n this._collection = void 0;\n }\n\n return {\n value: void 0,\n done: true\n };\n }; // Backbone.View\n // -------------\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n\n\n var View = Backbone.View = function (options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n\n _.extend(this, _.pick(options, viewOptions));\n\n this._ensureElement();\n\n this.initialize.apply(this, arguments);\n }; // Cached regex to split keys for `delegate`.\n\n\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/; // List of view options to be set as properties.\n\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; // Set up all inheritable **Backbone.View** properties and methods.\n\n _.extend(View.prototype, Events, {\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function (selector) {\n return this.$el.find(selector);\n },\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function () {\n return this;\n },\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function () {\n this._removeElement();\n\n this.stopListening();\n return this;\n },\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function () {\n this.$el.remove();\n },\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function (element) {\n this.undelegateEvents();\n\n this._setElement(element);\n\n this.delegateEvents();\n return this;\n },\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function (el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function (events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n\n return this;\n },\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function (eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function () {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function (eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function (tagName) {\n return document.createElement(tagName);\n },\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function () {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function (attributes) {\n this.$el.attr(attributes);\n }\n }); // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n\n\n var addMethod = function (base, length, method, attribute) {\n switch (length) {\n case 1:\n return function () {\n return base[method](this[attribute]);\n };\n\n case 2:\n return function (value) {\n return base[method](this[attribute], value);\n };\n\n case 3:\n return function (iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n\n case 4:\n return function (iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n\n default:\n return function () {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function (Class, base, methods, attribute) {\n _.each(methods, function (length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n }; // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n\n\n var cb = function (iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function (model) {\n return model.get(iteratee);\n };\n return iteratee;\n };\n\n var modelMatcher = function (attrs) {\n var matcher = _.matches(attrs);\n\n return function (model) {\n return matcher(model.attributes);\n };\n }; // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n\n\n var collectionMethods = {\n forEach: 3,\n each: 3,\n map: 3,\n collect: 3,\n reduce: 0,\n foldl: 0,\n inject: 0,\n reduceRight: 0,\n foldr: 0,\n find: 3,\n detect: 3,\n filter: 3,\n select: 3,\n reject: 3,\n every: 3,\n all: 3,\n some: 3,\n any: 3,\n include: 3,\n includes: 3,\n contains: 3,\n invoke: 0,\n max: 3,\n min: 3,\n toArray: 1,\n size: 1,\n first: 3,\n head: 3,\n take: 3,\n initial: 3,\n rest: 3,\n tail: 3,\n drop: 3,\n last: 3,\n without: 0,\n difference: 0,\n indexOf: 3,\n shuffle: 1,\n lastIndexOf: 3,\n isEmpty: 1,\n chain: 1,\n sample: 3,\n partition: 3,\n groupBy: 3,\n countBy: 3,\n sortBy: 3,\n indexBy: 3,\n findIndex: 3,\n findLastIndex: 3\n }; // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n\n var modelMethods = {\n keys: 1,\n values: 1,\n pairs: 1,\n invert: 1,\n pick: 0,\n omit: 0,\n chain: 1,\n isEmpty: 1\n }; // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([[Collection, collectionMethods, 'models'], [Model, modelMethods, 'attributes']], function (config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function (obj) {\n var mappings = _.reduce(_.functions(obj), function (memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n }); // Backbone.sync\n // -------------\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n\n\n Backbone.sync = function (method, model, options) {\n var type = methodMap[method]; // Default options, unless specified.\n\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n }); // Default JSON-request options.\n\n\n var params = {\n type: type,\n dataType: 'json'\n }; // Ensure that we have a URL.\n\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n } // Ensure that we have the appropriate request data.\n\n\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n } // For older servers, emulate JSON by encoding the request into an HTML-form.\n\n\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {\n model: params.data\n } : {};\n } // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n\n\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n\n options.beforeSend = function (xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n } // Don't process data on a non-GET request.\n\n\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n } // Pass along `textStatus` and `errorThrown` from jQuery.\n\n\n var error = options.error;\n\n options.error = function (xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n }; // Make the request, allowing the user to override any Ajax options.\n\n\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n }; // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n\n\n var methodMap = {\n create: 'POST',\n update: 'PUT',\n patch: 'PATCH',\n delete: 'DELETE',\n read: 'GET'\n }; // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n\n Backbone.ajax = function () {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n }; // Backbone.Router\n // ---------------\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n\n\n var Router = Backbone.Router = function (options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n\n this._bindRoutes();\n\n this.initialize.apply(this, arguments);\n }; // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n\n\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g; // Set up all inheritable **Backbone.Router** properties and methods.\n\n _.extend(Router.prototype, Events, {\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function () {},\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () {},\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function (route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function (fragment) {\n var args = router._extractParameters(route, fragment);\n\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function (callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function (fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function () {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n\n var route,\n routes = _.keys(this.routes);\n\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function (route) {\n route = route.replace(escapeRegExp, '\\\\$&').replace(optionalParam, '(?:$1)?').replace(namedParam, function (match, optional) {\n return optional ? match : '([^/?]+)';\n }).replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function (route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function (param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n }); // Backbone.History\n // ----------------\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n\n\n var History = Backbone.History = function () {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this); // Ensure that `History` can be used outside of the browser.\n\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n }; // Cached regex for stripping a leading hash/slash and trailing space.\n\n\n var routeStripper = /^[#\\/]|\\s+$/g; // Cached regex for stripping leading and trailing slashes.\n\n var rootStripper = /^\\/+|\\/+$/g; // Cached regex for stripping urls of hash.\n\n var pathStripper = /#.*$/; // Has the history handling already been started?\n\n History.started = false; // Set up all inheritable **Backbone.History** properties and methods.\n\n _.extend(History.prototype, Events, {\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n // Are we at the app root?\n atRoot: function () {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n // Does the pathname match the root?\n matchRoot: function () {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function (fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function () {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function (window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n // Get the pathname and search params, without the root.\n getPath: function () {\n var path = this.decodeFragment(this.location.pathname + this.getSearch()).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function (fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n\n return fragment.replace(routeStripper, '');\n },\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function (options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true; // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n\n this.options = _.extend({\n root: '/'\n }, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment(); // Normalize root to always include a leading and trailing slash.\n\n this.root = ('/' + this.root + '/').replace(rootStripper, '/'); // Transition from hashChange to pushState or vice versa if both are\n // requested.\n\n if (this._wantsHashChange && this._wantsPushState) {\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath()); // Return immediately as browser will do redirect to new url\n\n return true; // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {\n replace: true\n });\n }\n } // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n\n\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body; // Using `appendChild` will throw on IE < 9 if the document is not ready.\n\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n } // Add a cross-platform `addEventListener` shim for older browsers.\n\n\n var addEventListener = window.addEventListener || function (eventName, listener) {\n return attachEvent('on' + eventName, listener);\n }; // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n\n\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function () {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function (eventName, listener) {\n return detachEvent('on' + eventName, listener);\n }; // Remove window listeners.\n\n\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n } // Clean up the iframe if necessary.\n\n\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n } // Some environments will throw when clearing an undefined interval.\n\n\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function (route, callback) {\n this.handlers.unshift({\n route: route,\n callback: callback\n });\n },\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function (e) {\n var current = this.getFragment(); // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function (fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function (handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function (fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {\n trigger: !!options\n }; // Normalize the fragment.\n\n fragment = this.getFragment(fragment || ''); // Don't include a trailing slash on the root.\n\n var rootPath = this.root;\n\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n\n var url = rootPath + fragment; // Strip the fragment of the query and hash for matching.\n\n fragment = fragment.replace(pathStripper, ''); // Decode for matching.\n\n var decodedFragment = this.decodeFragment(fragment);\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment; // If pushState is available, we use it to set the fragment as a real URL.\n\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url); // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow; // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n } // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n\n } else {\n return this.location.assign(url);\n }\n\n if (options.trigger) return this.loadUrl(fragment);\n },\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function (location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n }); // Create the default Backbone.history.\n\n\n Backbone.history = new History(); // Helpers\n // -------\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n\n var extend = function (protoProps, staticProps) {\n var parent = this;\n var child; // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function () {\n return parent.apply(this, arguments);\n };\n } // Add static properties to the constructor function, if supplied.\n\n\n _.extend(child, parent, staticProps); // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n\n\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is needed\n // later.\n\n child.__super__ = parent.prototype;\n return child;\n }; // Set up inheritance for the model, collection, router, view and history.\n\n\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend; // Throw an error when a URL is needed, and none is supplied.\n\n var urlError = function () {\n throw new Error('A \"url\" property or function must be specified');\n }; // Wrap an optional error callback with a fallback error event.\n\n\n var wrapError = function (model, options) {\n var error = options.error;\n\n options.error = function (resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n}(backbone, backbone.exports));\n\nvar Backbone = backbone.exports;\n\nexport { Backbone as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Backbone from '../vendor/lib/backbone.js';\n\nvar STATE = '__STATE__';\nvar FETCH_DATA = 'FETCH_DATA';\nvar PAGINATION_DATA = 'PAGINATION_DATA';\nvar DEFAULT_PARAMS = 'DEFAULT_PARAMS';\nvar LINK_BY_HEADER = 'LINK_BY_HEADER';\nvar XHR = 'XHR'; // ################################################\n// # Source: https://gist.github.com/deiu/9335803\n// ################################################\n// unquote string (utility)\n\nfunction unquote(value) {\n if (value.charAt(0) === '\"' && value.charAt(value.length - 1) === '\"') {\n return value.substring(1, value.length - 1);\n }\n\n return value;\n}\n/*\nparse a Link header\nLink:; rel=meta\nvar r = parseLinkHeader(xhr.getResponseHeader('Link');\nr['meta']['href'] outputs https://example.org/.meta\n*/\n\n\nfunction parseLinkHeader(header) {\n /* eslint max-statements: 0 */\n var linkexp = /<[^>]*>\\s*(\\s*;\\s*[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[\\]?={} \\t]+)|(\"[^\"]*\")))*(,|$)/g;\n var paramexp = /[^()<>@,;:\"/[\\]?={} \\t]+=(([^()<>@,;:\"/[\\]?={} \\t]+)|(\"[^\"]*\"))/g;\n var matches = header.match(linkexp);\n var rels = {};\n\n for (var i = 0; i < matches.length; i++) {\n var split = matches[i].split('>');\n var href = split[0].substring(1);\n var link = {\n href: undefined,\n rel: undefined\n };\n link.href = href;\n var s = split[1].match(paramexp);\n\n for (var j = 0; j < s.length; j++) {\n var paramsplit = s[j].split('=');\n var name = paramsplit[0];\n link[name] = unquote(paramsplit[1]);\n }\n\n if (link.rel !== undefined) {\n rels[link.rel] = link;\n }\n }\n\n return rels;\n}\n/*\n * Sets the next page URL on the collection from link headers\n * See: http://www.rfc-editor.org/rfc/rfc5988.txt\n *\n * This method is looking for a link header with `rel=\"next\"`\n * An set's it as the next page's URL.\n *\n * If it doesn't find a next page, and current page is set by a link header\n * it assumes we are at the last page and deletes the current `next`\n */\n\n\nfunction setLinkHeadersPagination(collection, xhr) {\n try {\n var links = parseLinkHeader(xhr.getResponseHeader('link'));\n collection[STATE].set(LINK_BY_HEADER, true);\n collection.setPagination(links['next'].href);\n } catch (e) {\n if (collection[STATE].get(LINK_BY_HEADER)) {\n collection.setPagination(null);\n }\n }\n}\n\nfunction parseQuery(url) {\n var params = {};\n var rawQueryStr = url && url.split('?')[1];\n var queryString = rawQueryStr && decodeURIComponent(rawQueryStr.split('#')[0]).replace(/\\+/g, ' ');\n var props = queryString ? queryString.split('&') : [];\n\n for (var i = 0; i < props.length; i++) {\n var parts = props[i].split('=');\n params[parts.shift()] = parts.join('=');\n }\n\n return params;\n} // ################################################\n// # /Source\n// ################################################\n//\n\n\nconst collectionProps =\n/** @lends src/framework/Collection.prototype */\n{\n /**\n * Default fetch parameters\n * @type {Object|Function}\n */\n params: {},\n preinitialize: function (models, options) {\n const state = new Backbone.Model();\n\n const defaultParams = oktaUnderscore.defaults(options && options.params || {}, oktaUnderscore.result(this, 'params') || {});\n\n state.set(DEFAULT_PARAMS, defaultParams);\n this[STATE] = state; // Adds support for child class to convert to ES6 Class.\n // After conversion, `this.model` has to be a pure function to return Model Class.\n // The changes below is trying to distinguish the ambiguity between a Class and normal function,\n // as both are JavaScript function essentially.\n // There are three ways to define class for `this.model`\n // 1. Object properties: `model: BaseModel.extend({..})`\n // 2. Function constructor:\n // See example from\n // - appversions/src/models/CustomType.js\n // - appversions/src/models/EnumType.js\n // - appversions/src/models/SignOnMode.js\n // - authn-factors/src/models/Feature.js\n // - shared/src/models/SamlAttribute.js\n // 3. Function that returns a class.\n // model: function() { return BaseModel.extend({..}); }\n //\n // option 1 and 2 exists in code base today\n // option 3 is introduced to support child class to convert to ES6 class.\n // TODO: think of remove following check\n // The reason for `this.model !== Backbone.Model` is because `this.model` is default to `Backbone.Model`\n // set at Backbone.Collection.\n\n if (oktaUnderscore.isFunction(this.model) && this.model.length === 0 && this.model.isCourageModel !== true) {\n this.model = oktaUnderscore.result(this, 'model');\n }\n\n Backbone.Collection.prototype.preinitialize.apply(this, arguments);\n },\n\n /**\n * See [Backbone Collection.sync](http://backbonejs.org/#Collection-sync).\n */\n sync: function (method, collection, options) {\n var self = this;\n var success = options.success;\n\n options.success = function (resp, status, xhr) {\n // its important to set the pagination data *before* we call the success callback\n // because we want the pagination data to be ready when the collection triggers the `sync` event\n setLinkHeadersPagination(self, xhr);\n success.apply(null, arguments);\n };\n\n return Backbone.Collection.prototype.sync.call(this, method, collection, options);\n },\n\n /**\n * See [Backbone Collection.fetch](http://backbonejs.org/#Collection-fetch).\n */\n fetch: function (options) {\n options || (options = {});\n var state = this[STATE];\n var xhr = state.get(XHR);\n options.data = oktaUnderscore.extend({}, state.get(DEFAULT_PARAMS), options.data || {});\n options.fromFetch = true;\n state.set(FETCH_DATA, options.data);\n\n if (xhr && xhr.abort && options.abort !== false) {\n xhr.abort();\n }\n\n xhr = Backbone.Collection.prototype.fetch.call(this, options);\n state.set(XHR, xhr);\n return xhr;\n },\n\n /**\n * Set pagination data to get to the next page\n * @param {Mixed} params\n * @param {Object} [options]\n * @param {Boolean} [options.fromFetch] should we include data from the previous fetch call in this object\n * @example\n * collection.setPagination({q: 'foo', page: '2'}); //=> {q: 'foo', page: '2'}\n *\n * collection.setPagination('/path/to/resource?q=baz&page=4'); //=> {q: 'baz', page: '4'}\n *\n * collection.setPagination('/path/to/resource'); //=> {}\n *\n * collection.fetch({data: {q: 'foo'}});\n * collection.setPagination({page: 2}, {fromFetch: true}); //=> {q: 'foo', page: 2}\n *\n * any \"falsy\" value resets pagination\n * collection.setPagination(); //=> {}\n * collection.setPagination(null); //=> {}\n * collection.setPagination(false); //=> {}\n * collection.setPagination(''); //=> {}\n * collection.setPagination(0); //=> {}\n * @protected\n */\n setPagination: function (params, options) {\n /* eslint complexity: [2, 8] */\n if (oktaUnderscore.isString(params) && params) {\n params = parseQuery(params);\n }\n\n if (!oktaUnderscore.isObject(params) || oktaUnderscore.isArray(params) || !oktaUnderscore.size(params)) {\n params = null;\n } else if (options && options.fromFetch) {\n params = oktaUnderscore.extend({}, this.getFetchData(), params);\n }\n\n this[STATE].set(PAGINATION_DATA, params);\n },\n\n /**\n * Returns the `data` parameters applied in th most recent `fetch` call\n * It will include parameters set by {@link #params} and optios.params passed to the constructor\n * @return {Object}\n * @protected\n */\n getFetchData: function () {\n return this[STATE].get(FETCH_DATA) || {};\n },\n\n /**\n * Data object for constructing a request to fetch the next page\n * @return {Object}\n * @protected\n */\n getPaginationData: function () {\n return this[STATE].get(PAGINATION_DATA) || {};\n },\n\n /**\n * Does this collection have more data on the server (e.g is there a next \"page\")\n * @return {Boolean}\n */\n hasMore: function () {\n return oktaUnderscore.size(this.getPaginationData()) > 0;\n },\n\n /**\n * Get the next page from the server\n * @return {Object} xhr returned by {@link #fetch}\n */\n fetchMore: function () {\n if (!this.hasMore()) {\n throw new Error('Invalid Request');\n }\n\n return this.fetch({\n data: this.getPaginationData(),\n add: true,\n remove: false,\n update: true\n });\n },\n\n /**\n * See [Backbone Collection.reset](http://backbonejs.org/#Collection-reset).\n */\n reset: function (models, options) {\n options || (options = {}); // only reset the pagination when reset is being called explicitly.\n // this is to avoid link headers pagination being overriden and reset when\n // fetching the collection using `collection.fetch({reset: true})`\n\n if (!options.fromFetch) {\n this.setPagination(null);\n }\n\n return Backbone.Collection.prototype.reset.apply(this, arguments);\n },\n // we want \"where\" to be able to search through derived properties as well\n where: function (attrs, first) {\n if (oktaUnderscore.isEmpty(attrs)) {\n return first ? void 0 : [];\n }\n\n return this[first ? 'find' : 'filter'](function (model) {\n for (var key in attrs) {\n if (attrs[key] !== model.get(key)) {\n return false;\n }\n }\n\n return true;\n });\n },\n\n /**\n * See [Backbone Collection.create](http://backbonejs.org/#Collection-create).\n */\n create: function (model, options) {\n options || (options = {});\n\n if (!oktaUnderscore.result(model, 'urlRoot')) {\n options.url = oktaUnderscore.result(this, 'url');\n }\n\n return Backbone.Collection.prototype.create.call(this, model, options);\n },\n // Use Object.create instead of {} on _byId to avoid __proto__ functions to return\n // This can be removed once the issue has addressed in backbone framework\n // https://github.com/jashkenas/backbone/pull/4225\n _reset: function () {\n Backbone.Collection.prototype['_reset'].call(this);\n this._byId = Object.create(null);\n }\n};\n/**\n *\n * Archer.Collection is a standard [Backbone.Collection](http://backbonejs.org/#Collection) with pre-set `data`\n * parameters and built in pagination - works with [http link headers](https://tools.ietf.org/html/rfc5988)\n * out of the box:\n *\n * @class src/framework/Collection\n * @extends external:Backbone.Collection\n * @example\n * var Users = Archer.Collection.extend({\n * url: '/api/v1/users'\n * params: {expand: true}\n * });\n * var users = new Users(null, {params: {type: 'new'}}),\n * $button = this.$('a.fetch-more');\n *\n * $button.click(function () {\n * users.fetchMore();\n * });\n *\n * this.listenTo(users, 'sync', function () {\n * $button.toggle(users.hasMore());\n * });\n *\n * collection.fetch(); //=> '/api/v1/users?expand=true&type=new'\n */\n\nconst Collection = Backbone.Collection.extend(collectionProps);\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a Collection Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\n\nCollection.isCourageCollection = true;\n\nexport { Collection as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Collection from '../framework/Collection.js';\n\nconst baseCollectionProps =\n/** @lends module:Okta.Collection.prototype */\n{\n /**\n * Is the end point using the legacy \"secureJSON\" format\n * @type {Function|Boolean}\n */\n secureJSON: false,\n // TODO: may not be simplily moved to initialize as\n // child class override initialize but didn't invoke parent.initialize.\n // need to refactor child classes first.\n constructor: function () {\n Collection.apply(this, arguments);\n\n if (oktaUnderscore.result(this, 'secureJSON')) {\n this.sync = oktaUnderscore.wrap(this.sync, function (sync, method, collection, options) {\n return sync.call(this, method, collection, oktaUnderscore.extend({\n dataType: 'secureJSON'\n }, options));\n });\n }\n }\n};\n/**\n * Wrapper around the more generic {@link src/framework/Collection} that\n * contains Okta-specific logic.\n * @class module:Okta.Collection\n * @extends src/framework/Collection\n */\n\nvar BaseCollection = Collection.extend(baseCollectionProps);\n\nexport { BaseCollection as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Backbone from '../vendor/lib/backbone.js';\nimport Logger from '../util/Logger.js';\n\nfunction isModelPropertySchema(obj) {\n return obj && obj.type || obj.deps;\n}\n\n/**\n * Archer.Model is a standard [Backbone.Model](http://backbonejs.org/#Model) with a few additions:\n *\n * - {@link src/framework/Model#derived Derived properties}\n * - {@link src/framework/Model#props Built in schema validation}\n * - {@link src/framework/Model#local Private properties (with schema validation)}\n * - {@link src/framework/Model#flat Flattening of nested objects}\n *\n * Both derived and private properties are filtered out when sending the data to the server.\n *\n * See [Backbone.Model](http://backbonejs.org/#Model-constructor).\n *\n * @class src/framework/Model\n * @extends external:Backbone.Model\n * @param {Object} [attributes] - Initial model attributes (data)\n * @param {Object} [options] - Options hash\n * @example\n * var Person = Archer.Model.extend({\n * props: {\n * 'fname': 'string',\n * 'lname': 'string'\n * },\n * local: {\n * isLoggedIn: 'boolean'\n * },\n * derived: {\n * name: {\n * deps: ['fname', 'lname'],\n * fn: function (fname, lname) {\n * return fname + ' ' + lname;\n * }\n * }\n * }\n * });\n * var model = new Person({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); //=> \"Joe Doe\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n *\n * model.set('isLoggedIn', true);\n * model.get('isLoggedIn'); //=> true\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n */\nlet Model;\nconst statics = {\n ERROR_BLANK: 'model.validation.field.blank',\n ERROR_WRONG_TYPE: 'model.validation.field.wrong.type',\n ERROR_NOT_ALLOWED: 'model.validation.field.value.not.allowed',\n ERROR_INVALID: 'model.validation.field.invalid',\n ERROR_IARRAY_UNIQUE: 'model.validation.field.array.unique',\n ERROR_INVALID_FORMAT_EMAIL: 'model.validation.field.invalid.format.email',\n ERROR_INVALID_FORMAT_URI: 'model.validation.field.invalid.format.uri',\n ERROR_INVALID_FORMAT_IPV4: 'model.validation.field.invalid.format.ipv4',\n ERROR_INVALID_FORMAT_HOSTNAME: 'model.validation.field.invalid.format.hostname',\n ERROR_STRING_STRING_MIN_LENGTH: 'model.validation.field.string.minLength',\n ERROR_STRING_STRING_MAX_LENGTH: 'model.validation.field.string.maxLength'\n};\n\nfunction flatten(value, objectTypeFields, key, target) {\n var filter = oktaUnderscore.contains(objectTypeFields, key);\n\n target || (target = {});\n\n if (!filter && oktaUnderscore.isObject(value) && !oktaUnderscore.isArray(value) && !oktaUnderscore.isFunction(value)) {\n oktaUnderscore.each(value, function (val, i) {\n flatten(val, objectTypeFields, key ? key + '.' + i : i, target);\n });\n } // Case where target is an empty object. Guard against returning {undefined: undefined}.\n else if (key !== undefined) {\n target[key] = value;\n }\n\n return target;\n}\n\nfunction unflatten(data) {\n oktaUnderscore.each(data, function (value, key, data) {\n if (key.indexOf('.') === -1) {\n return;\n }\n\n var part;\n var ref = data;\n var parts = key.split('.');\n\n while ((part = parts.shift()) !== undefined) {\n if (!ref[part]) {\n ref[part] = parts.length ? {} : value;\n }\n\n ref = ref[part];\n }\n\n delete data[key];\n });\n\n return data;\n}\n\nfunction createMessage(field, msg) {\n var obj = {};\n obj[field.name] = msg;\n return obj;\n}\n\nfunction normalizeSchemaDef(field, name) {\n var target;\n\n if (oktaUnderscore.isString(field)) {\n target = {\n type: field\n };\n } else if (oktaUnderscore.isArray(field)) {\n target = {\n type: field[0],\n required: field[1],\n value: field[2]\n };\n } else {\n target = oktaUnderscore.clone(field);\n }\n\n oktaUnderscore.defaults(target, {\n required: false,\n name: name\n });\n\n return target;\n}\n\nfunction capitalize(string) {\n return string.toLowerCase().replace(/\\b[a-z]/g, function (letter) {\n return letter.toUpperCase();\n });\n}\n\nfunction _validateRegex(value, pattern, error) {\n if (!pattern.test(value)) {\n return error;\n }\n}\n\nvar StringFormatValidators = {\n /*eslint max-len: 0 */\n email: function (value) {\n // Taken from http://emailregex.com/ on 2017-03-06.\n var pattern = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_EMAIL);\n },\n uri: function (value) {\n // source: https://mathiasbynens.be/demo/url-regex\n var pattern = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_URI);\n },\n ipv4: function (value) {\n // source: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n var pattern = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_IPV4);\n },\n hostname: function (value) {\n // source: http://www.regextester.com/23\n var pattern = /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/;\n return _validateRegex(value, pattern, Model.ERROR_INVALID_FORMAT_HOSTNAME);\n }\n};\n\nfunction validateStringFormat(field, value) {\n var validator = StringFormatValidators[field.format];\n\n if (field.format && !validator) {\n throw new TypeError(field.format + ' is not a supported string format');\n }\n\n return validator && validator(value);\n}\n\nfunction validateString(field, value) {\n var createMessageWith = oktaUnderscore.partial(createMessage, field);\n\n var invalidFormat = validateStringFormat(field, value);\n\n if (invalidFormat) {\n return createMessageWith(invalidFormat);\n }\n\n if (value && field.minLength && value.length < field.minLength) {\n return createMessageWith(Model.ERROR_STRING_STRING_MIN_LENGTH);\n }\n\n if (value && field.maxLength && value.length > field.maxLength) {\n return createMessageWith(Model.ERROR_STRING_STRING_MAX_LENGTH);\n }\n}\n\nfunction validateField(field, value) {\n /* eslint complexity: [2, 25], max-statements: [2, 30] */\n var createMessageWith = oktaUnderscore.partial(createMessage, field);\n\n var isDefined = !oktaUnderscore.isUndefined(value) && !oktaUnderscore.isNull(value);\n var checkType;\n var errorMessage; // If using an array validator, perform the validation\n\n if (Array.isArray(field.validate)) {\n const output = [];\n let foundError = false;\n let result;\n field.validate.forEach(item => {\n if (!value) {\n result = false;\n } else {\n switch (item.type.toLowerCase()) {\n case 'regex':\n result = new RegExp(item.value.pattern, item.value.flags || '').test(value);\n break;\n\n default:\n result = false;\n }\n } // Append the result.\n\n\n foundError = foundError || !result;\n output.push({\n // eslint-disable-next-line no-prototype-builtins\n message: item.hasOwnProperty('message') ? item.message : '',\n passed: result\n });\n });\n\n if (foundError) {\n return createMessageWith(output);\n }\n\n return;\n } // check required fields\n\n\n if (field.required && (!isDefined || oktaUnderscore.isNull(value) || value === '')) {\n return createMessageWith(Model.ERROR_BLANK);\n } // check type\n\n\n checkType = oktaUnderscore['is' + capitalize(field.type)];\n\n if (isDefined && field.type !== 'any' && (!oktaUnderscore.isFunction(checkType) || !checkType(value))) {\n return createMessageWith(Model.ERROR_WRONG_TYPE);\n } // validate string format\n\n\n if (value && field.type === 'string') {\n var error = validateString(field, value);\n\n if (error) {\n return error;\n }\n } // check pre set values (enum)\n\n\n if (isDefined && field.values && !oktaUnderscore.contains(field.values, value)) {\n return createMessageWith(Model.ERROR_NOT_ALLOWED);\n } // check validate method\n\n\n if (oktaUnderscore.isFunction(field.validate)) {\n var result = field.validate(value);\n\n if (oktaUnderscore.isString(result) && result) {\n return createMessageWith(result);\n } else if (result === false) {\n return createMessageWith(Model.ERROR_INVALID);\n }\n } // check array items\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n\n\n if (isDefined && field.type === 'array' && (errorMessage = validateArrayField(field, value))) {\n return createMessageWith(errorMessage);\n }\n}\n\nfunction validateArrayField(field, arr) {\n if (field.minItems && arr.length < field.minItems) {\n return 'model.validation.field.array.minItems';\n } else if (field.maxItems && arr.length > field.maxItems) {\n return 'model.validation.field.array.maxItems';\n } else if (field.uniqueItems && arr.length > oktaUnderscore.uniq(arr).length) {\n return Model.ERROR_IARRAY_UNIQUE;\n } else if (field.items) {\n /* eslint max-depth: [2, 3] */\n var arrayField = normalizeSchemaDef(field.items, 'placeholder');\n\n for (var i = 0; i < arr.length; i++) {\n var value = arr[i];\n var error = validateField(arrayField, value);\n\n if (error) {\n return error['placeholder'];\n }\n }\n }\n}\n\nconst props =\n/** @lends src/framework/Model.prototype */\n{\n /**\n * Pass props as an object to extend, describing the observable properties of your model. The props\n * properties should not be set on an instance, as this won't define new properties, they should only be passed to\n * extend.\n * Properties can be defined in three different ways:\n *\n * - As a string with the expected dataType. One of string, number, boolean, array, object, date, or any.\n * Eg: `name: 'string'`.\n * - An array of `[dataType, required, default]`\n * - An object `{type: 'string', format: '', required: true, value: '', values: [], validate: function() {}`\n * - `value` will be the value that the property will be set to if it is undefined, either by not being set during\n * initialization, or by being explicitly set to undefined.\n * - `format` is a json-schame derived string format. Supported formats are: `email`, `uri`, `hostname` and `ipv4`.\n * - If `required` is true, one of two things will happen. If a default is set for the property, the property will\n * start with that value. If a default is not set for the property, validation will fail\n * - If `values` array is passed, then you'll be able to change a property to one of those values only.\n * - If `validate` is defined, it should return false or a custom message string when the validation fails.\n * - If the type is defined as `array`, the array elements could be defined by `minItems` (Number),\n * `uniqueItems` (Boolean) and `items` (a field definition such as this one that will validate each array member)\n * To the `validate` method\n * - Trying to set a property to an invalid type will raise an exception.\n *\n * @type {Mixed|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * name: 'string',\n * age: 'number',\n * paying: ['boolean', true, false], //required attribute, defaulted to false\n * type: {\n * type: 'string',\n * values: ['regular-hero', 'super-hero', 'mega-hero']\n * },\n * likes: {\n * type: 'string',\n * validate: function (value) {\n * return /^[\\w]+ing$/.test(value)\n * }\n * }\n * }\n * });\n */\n props: {},\n\n /**\n * Derived properties (also known as computed properties) are properties of the model that depend on the\n * other (props, local or even derived properties to determine their value. Best demonstrated with an example:\n *\n * Each derived property, is defined as an object with the current properties:\n *\n * - `deps` {Array} - An array of property names which the derived property depends on.\n * - `fn` {Function} - A function which returns the value of the computed property. It is called in the context of\n * the current object, so that this is set correctly.\n * - `cache` {Boolean} - - Whether to cache the property. Uncached properties are computed every time they are\n * accessed. Useful if it depends on the current time for example. Defaults to `true`.\n *\n * Derived properties are retrieved and fire change events just like any other property. They cannot be set\n * directly.\n * @type {Object|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * firstName: 'string',\n * lastName: 'string'\n * },\n * derived: {\n * fullName: {\n * deps: ['firstName', 'lastName'],\n * fn: function (firstName, lastName) {\n * return firstName + ' ' + lastName;\n * }\n * }\n * }\n * });\n *\n * var person = new Person({ firstName: 'Phil', lastName: 'Roberts' })\n * console.log(person.get('fullName')) //=> \"Phil Roberts\"\n *\n * person.set('firstName', 'Bob');\n * console.log(person.get('fullName')) //=> \"Bob Roberts\"\n */\n derived: {},\n\n /**\n * local properties are defined and work in exactly the same way as {@link src/framework/Model#props|props}, but generally only exist for\n * the lifetime of the page.\n * They would not typically be persisted to the server, and are not returned by calls to {@link src/framework/Model#toJSON|toJSON}.\n *\n * @type {Object|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * name: 'string',\n * },\n * local: {\n * isLoggedIn: 'boolean'\n * }\n * );\n */\n local: {},\n\n /**\n * Flatten the payload into dot notation string keys:\n *\n * @type {Boolean|Function}\n * @example\n * var Person = Model.extend({\n * props: {\n * 'profile.fname': 'string',\n * 'profile.lname': 'string',\n * 'profile.languages': 'object'\n * },\n * flat: true\n * });\n * var person = new Person({'profile': {\n * 'fname': 'John',\n * 'lname': 'Doe',\n * 'languages': {name: \"English\", value: \"EN\"}\n * }}, {parse: true});\n * person.get('profile'); //=> undefined\n * person.get('profile.fname'); //=> 'John'\n * person.get('profile.lname'); //=> 'Doe'\n * person.get('profile.languages'); //=> {name: \"English\", value: \"EN\"}\n * person.get('profile.languages.name'); //=> undefined\n * person.toJSON(); //=> {'profile': {'fname': 'John'} }\n */\n flat: true,\n\n /**\n * @deprecated\n * @alias Backbone.Model#defaults\n */\n defaults: {},\n // FIXME: preinitialize takes parameter `attributes` and `options`, which inherit from constructor.\n preinitialize: function (options, ...rest) {\n this.options = options || {};\n var schema = this['__schema__'] = {};\n var objectTypeFields = [];\n schema.computedProperties = {};\n schema.props = oktaUnderscore.clone(oktaUnderscore.result(this, 'props') || {});\n schema.derived = oktaUnderscore.clone(oktaUnderscore.result(this, 'derived') || {});\n schema.local = oktaUnderscore.clone(oktaUnderscore.result(this, 'local') || {});\n var defaults = {};\n\n oktaUnderscore.each(oktaUnderscore.extend({}, schema.props, schema.local), function (options, name) {\n var schemaDef = normalizeSchemaDef(options, name);\n\n if (!oktaUnderscore.isUndefined(schemaDef.value)) {\n defaults[name] = schemaDef.value;\n }\n\n if (schemaDef.type === 'object') {\n objectTypeFields.push(name);\n }\n }, this);\n\n if (oktaUnderscore.size(defaults)) {\n var localDefaults = oktaUnderscore.result(this, 'defaults');\n\n this.defaults = function () {\n return oktaUnderscore.defaults({}, defaults, localDefaults);\n };\n } // override `validate`\n\n\n this.validate = oktaUnderscore.wrap(this.validate, function (validate) {\n var args = oktaUnderscore.rest(arguments);\n\n var res = oktaUnderscore.extend(this._validateSchema.apply(this, args), validate.apply(this, args));\n\n return oktaUnderscore.size(res) && res || undefined;\n }); // override `parse`\n\n this.parse = oktaUnderscore.wrap(this.parse, function (parse) {\n var target = parse.apply(this, oktaUnderscore.rest(arguments));\n\n if (oktaUnderscore.result(this, 'flat')) {\n target = flatten(target, objectTypeFields);\n }\n\n return target;\n });\n Backbone.Model.prototype.preinitialize.call(this, options, ...rest);\n },\n // FIXME:\n // constructor takes parameter `attributes` and `options`.\n constructor: function () {\n Backbone.Model.apply(this, arguments);\n var schema = this['__schema__'];\n\n oktaUnderscore.each(schema.derived, function (options, name) {\n schema.computedProperties[name] = this.__getDerivedValue(name); // set initial value;\n\n var deps = isModelPropertySchema(options) ? options.deps || [] : [];\n\n if (deps.length) {\n this.on('cache:clear change:' + deps.join(' change:'), function () {\n var value = this.__getDerivedValue(name);\n\n if (value !== schema.computedProperties[name]) {\n schema.computedProperties[name] = value;\n this.trigger('change:' + name, this, value);\n }\n }, this);\n }\n }, this);\n\n this.on('sync', function () {\n this.__syncedData = this.toJSON();\n }, this);\n },\n validate: function () {},\n\n /**\n * Check if the schema settings allow this field to exist in the model\n * @param {String} key\n * @return {Boolean}\n */\n allows: function (key) {\n var schema = this['__schema__'];\n\n var all = oktaUnderscore.extend({}, schema.props, schema.local);\n\n if (!oktaUnderscore.has(all, key)) {\n Logger.warn('Field not defined in schema', key);\n }\n\n return true;\n },\n\n /**\n * Returns the schema for the specific property\n *\n * @param propName - The name of the property\n * @returns {*} | null\n */\n getPropertySchema: function (propName) {\n var schema = this['__schema__'];\n return oktaUnderscore.reduce([schema.props, schema.local], function (result, options) {\n return result || normalizeSchemaDef(options[propName], propName);\n }, null);\n },\n set: function (key, val) {\n var attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n } else {\n (attrs = {})[key] = val;\n } // Don't override a computed properties\n\n\n oktaUnderscore.each(attrs, function (value, key) {\n if (oktaUnderscore.has(this['__schema__'].derived, key)) {\n throw new Error(`overriding derived properties is not supported: ${key}`);\n }\n }, this); // Schema validation\n\n\n var errorFields = [];\n\n oktaUnderscore.each(attrs, function (value, key) {\n this.allows(key) || errorFields.push(key);\n }, this);\n\n if (errorFields.length) {\n throw new Error(`field not allowed: ${errorFields.join(', ')}`);\n }\n\n return Backbone.Model.prototype.set.apply(this, arguments);\n },\n get: function (attr) {\n var schema = this['__schema__'];\n\n if (oktaUnderscore.has(schema.derived, attr)) {\n if (schema.derived[attr].cache !== false) {\n return schema.computedProperties[attr];\n } else {\n return this.__getDerivedValue(attr);\n }\n }\n\n return Backbone.Model.prototype.get.apply(this, arguments);\n },\n\n /**\n * Return a shallow copy of the model's attributes for JSON stringification.\n * This can be used for persistence, serialization, or for augmentation before being sent to the server.\n * The name of this method is a bit confusing, as it doesn't actually return a JSON string —\n * but I'm afraid that it's the way that the JavaScript API for JSON.stringify works.\n *\n * See [Backbone.Model.toJSON](http://backbonejs.org/#Model-toJSON)\n *\n * @param {Object} options\n * @return {Object}\n * @example\n * var artist = new Model({\n * firstName: 'Wassily',\n * lastName: 'Kandinsky'\n * });\n *\n * artist.set({birthday: 'December 16, 1866'});\n * JSON.stringify(artist); //=> {'firstName':'Wassily','lastName':'Kandinsky','birthday':'December 16, 1866'}\n */\n toJSON: function (options) {\n options || (options = {});\n\n var res = oktaUnderscore.clone(Backbone.Model.prototype.toJSON.apply(this, arguments));\n\n var schema = this['__schema__']; // cleanup local properties\n\n if (!options.verbose) {\n res = oktaUnderscore.omit(res, oktaUnderscore.keys(schema.local));\n } else {\n // add derived properties\n oktaUnderscore.each(schema.derived, function (options, name) {\n res[name] = this.get(name);\n }, this);\n }\n\n if (this.flat) {\n res = unflatten(res);\n }\n\n return res;\n },\n\n /**\n * Removes all attributes from the model, including the id attribute.\n * Fires a `\"change\"` event unless `silent` is passed as an option.\n * Sets the default values to the model\n * @param {Object} [options]\n */\n reset: function (options) {\n this.clear(options);\n this.set(oktaUnderscore.result(this, 'defaults'), options);\n },\n\n /**\n * Is the data on the model has local modifications since the last sync event?\n * @return {Boolean} is the model in sync with the server\n */\n isSynced: function () {\n return oktaUnderscore.isEqual(this.__syncedData, this.toJSON());\n },\n\n /**\n * validate a specific field in the model.\n * @param {String} key\n * @return {Object} returns `{fieldName: errorMessage}` if invalid, otherwise undefined.\n * @readonly\n */\n validateField: function (key) {\n var schema = key && this.getPropertySchema(key);\n return schema && validateField(schema, this.get(key));\n },\n\n /**\n * Runs local schema validation. Invoked internally by {@link src/framework/Model#validate|validate}.\n * @return {Object}\n * @protected\n */\n _validateSchema: function () {\n var schema = this['__schema__'];\n return oktaUnderscore.reduce(oktaUnderscore.extend({}, schema.props, schema.local), function (memo, options, name) {\n return oktaUnderscore.extend(memo, this.validateField(name) || {});\n }, {}, this);\n },\n __getDerivedValue: function (name) {\n var options = this['__schema__'].derived[name];\n\n if (oktaUnderscore.isString(options)) {\n var key = options;\n options = {\n deps: [key],\n fn: function () {\n return this.get(key);\n }\n };\n }\n\n var deps = options.deps || [];\n return options.fn.apply(this, oktaUnderscore.map(deps, this.get, this));\n }\n};\nModel = Backbone.Model.extend(props, statics);\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a Model Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\n\nModel.isCourageModel = true;\nvar FrameworkModel = Model;\n\nexport { FrameworkModel as default, isModelPropertySchema };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport FrameworkModel from '../framework/Model.js';\n\n/**\n * Wrapper around the more generic {@link src/framework/Model} that\n * contains Okta-specific logic.\n * @class module:Okta.Model\n * @extends src/framework/Model\n */\nvar Model = FrameworkModel.extend(\n/** @lends module:Okta.Model.prototype */\n{\n /**\n * Is the end point using the legacy \"secureJSON\" format\n * @type {Function|Boolean}\n */\n secureJSON: false,\n _builtInLocalProps: {\n __edit__: 'boolean',\n __pending__: 'boolean'\n },\n preinitialize: function () {\n this.local = oktaUnderscore.defaults({}, oktaUnderscore.result(this, 'local'), this._builtInLocalProps);\n FrameworkModel.prototype.preinitialize.apply(this, arguments);\n },\n constructor: function () {\n FrameworkModel.apply(this, arguments);\n\n if (oktaUnderscore.result(this, 'secureJSON')) {\n this.sync = oktaUnderscore.wrap(this.sync, function (sync, method, model, options) {\n return sync.call(this, method, model, oktaUnderscore.extend({\n dataType: 'secureJSON'\n }, options));\n });\n }\n }\n});\n\nexport { Model as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Model from './Model.js';\n\nconst hasProps = function (model) {\n const local = oktaUnderscore.omit(model.local, oktaUnderscore.keys(model._builtInLocalProps));\n\n return oktaUnderscore.size(model.props) + oktaUnderscore.size(local) > 0;\n};\n\nconst props =\n/** @lends module:Okta.BaseModel.prototype */\n{\n /**\n * @type {Boolean}\n */\n flat: false,\n constructor: function () {\n Model.apply(this, arguments);\n this.on('sync', this._setSynced);\n },\n allows: function () {\n if (hasProps(this)) {\n return Model.prototype.allows.apply(this, arguments);\n } else {\n return true;\n }\n },\n // bw compatibility support for old computed properties\n set: function (key, val) {\n let attrs;\n\n if (typeof key === 'object') {\n attrs = key;\n } else {\n (attrs = {})[key] = val;\n } // computed properties\n\n\n oktaUnderscore(attrs).each(function (fn, attr) {\n if (!fn || !oktaUnderscore.isArray(fn.__attributes)) {\n return;\n }\n\n this.on('change:' + fn.__attributes.join(' change:'), function () {\n const val = this.get(attr);\n\n if (val !== this['__schema__'].computedProperties[attr]) {\n this['__schema__'].computedProperties[attr] = val;\n this.trigger('change:' + attr, val);\n }\n }, this);\n }, this);\n\n return Model.prototype.set.apply(this, arguments);\n },\n\n /**\n * Get the current value of an attribute from the model. For example: `note.get(\"title\")`\n *\n * See [Model.get](http://backbonejs.org/#Model-get)\n * @param {String} attribute\n * @return {Mixed} The value of the model attribute\n */\n get: function () {\n const value = Model.prototype.get.apply(this, arguments);\n\n if (oktaUnderscore.isFunction(value)) {\n return value.apply(this, oktaUnderscore.map(value.__attributes || [], this.get, this));\n }\n\n return value;\n },\n\n /**\n * Return a shallow copy of the model's attributes for JSON stringification.\n * This can be used for persistence, serialization, or for augmentation before being sent to the server.\n * The name of this method is a bit confusing, as it doesn't actually return a JSON string —\n * but I'm afraid that it's the way that the JavaScript API for JSON.stringify works.\n *\n * ```javascript\n * var artist = new Model({\n * firstName: \"Wassily\",\n * lastName: \"Kandinsky\"\n * });\n *\n * artist.set({birthday: \"December 16, 1866\"});\n * alert(JSON.stringify(artist)); // {\"firstName\":\"Wassily\",\"lastName\":\"Kandinsky\",\"birthday\":\"December 16, 1866\"}\n * ```\n * See [Model.toJSON](http://backbonejs.org/#Model-toJSON)\n * @param {Object} options\n * @return {Object}\n */\n toJSON: function (options) {\n options || (options = {});\n const res = Model.prototype.toJSON.apply(this, arguments); // cleanup computed properties\n\n oktaUnderscore(res).each(function (value, key) {\n if (typeof value === 'function') {\n if (options.verbose) {\n res[key] = this.get(key);\n } else {\n delete res[key];\n }\n }\n }, this); // cleanup private properties\n\n\n if (!options.verbose) {\n oktaUnderscore(res).each(function (value, key) {\n if (/^__\\w+__$/.test(key)) {\n delete res[key];\n }\n });\n }\n\n return res;\n },\n sanitizeAttributes: function (attributes) {\n const attrs = {};\n\n oktaUnderscore.each(attributes, function (value, key) {\n if (!oktaUnderscore.isFunction(value)) {\n attrs[key] = value;\n }\n });\n\n return attrs;\n },\n reset: function (options) {\n this.clear(options);\n this.set(this.sanitizeAttributes(this.defaults), options);\n },\n clear: function (options) {\n const attrs = {};\n\n oktaUnderscore.each(this.sanitizeAttributes(this.attributes), function (value, key) {\n attrs[key] = void 0;\n });\n\n return this.set(attrs, oktaUnderscore.extend({}, options, {\n unset: true\n }));\n },\n\n /**\n * @private\n */\n _setSynced: function (newModel) {\n this._syncedData = newModel && oktaUnderscore.isFunction(newModel.toJSON) ? newModel.toJSON() : {};\n },\n\n /**\n * @private\n */\n _getSynced: function () {\n return this._syncedData;\n },\n isSynced: function () {\n return oktaUnderscore.isEqual(this._getSynced(), this.toJSON());\n }\n};\nconst statics =\n/** @lends module:Okta.BaseModel.prototype */\n{\n /**\n * @static\n *\n * Example:\n *\n * ```javascript\n * var Model = BaseModel.extend({\n * defaults: {\n * name: BaseModel.ComputedProperty(['fname', 'lname'], function (fname, lname) {\n * return fname + ' ' + lname;\n * })\n * }\n * });\n * var model = new Model({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); // Joe Doe\n * model.toJSON(); // {fname: 'Joe', lname: 'Doe'}\n * ```\n *\n * @param {Array} attributes (optional) - an array of the attribute names this method depends on\n * @param {Function} callback the function that computes the value of the property\n *\n * @deprecated Use {@link #derived} instead\n */\n ComputedProperty: function (attributes, fn) {\n // First parameter is optional\n if (!fn && typeof attributes === 'function') {\n fn = attributes;\n } else {\n fn.__attributes = attributes;\n }\n\n return fn;\n }\n};\n/**\n * @class module:Okta.BaseModel\n * @extends module:Okta.Model\n * @deprecated Use {@link module:Okta.Model|Okta.Model} instead\n * @example\n * var Model = BaseModel.extend({\n * defaults: {\n * name: BaseModel.ComputedProperty(['fname', 'lname'], function (fname, lname) {\n * return fname + ' ' + lname;\n * })\n * }\n * });\n * var model = new Model({fname: 'Joe', lname: 'Doe'});\n * model.get('name'); //=> \"Joe Doe\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n *\n * model.set('__private__', 'private property');\n * model.get('__private__'); //=> \"private property\"\n * model.toJSON(); //=> {fname: 'Joe', lname: 'Doe'}\n */\n\nvar BaseModel = Model.extend(props, statics);\n\nexport { BaseModel as default };\n","import $ from 'jquery';\n\n/* eslint-disable @okta/okta-ui/enforce-requirejs-names, @okta/okta-ui/no-specific-modules */\n$.ajaxSetup({\n beforeSend: function (xhr) {\n xhr.setRequestHeader('X-Okta-XsrfToken', $('#_xsrfToken').text());\n },\n converters: {\n 'text secureJSON': function (str) {\n if (str.substring(0, 11) === 'while(1){};') {\n str = str.substring(11);\n }\n\n return JSON.parse(str);\n }\n }\n}); // Selenium Hook\n// Widget such as autocomplete and autosuggest needs to be triggered from the running version of jQuery.\n// We have 2 versions of jQuery running in parallel and they don't share the same events bus\n\nconst oktaJQueryStatic = $;\nwindow.jQueryCourage = oktaJQueryStatic;\n\nexport { oktaJQueryStatic as default };\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nconst fn: Record any> = {};\nconst hasFullCorsSupport = 'withCredentials' in new window.XMLHttpRequest();\nconst hasXDomainRequest = typeof window.XDomainRequest !== 'undefined';\n\nfn.corsIsNotSupported = function() {\n return !(hasFullCorsSupport || hasXDomainRequest);\n};\n\nfn.corsIsNotEnabled = function(jqXhr) {\n // Not a definitive check, but it's the best we've got.\n // Note: This will change when OktaAuth is updated\n return jqXhr.status === 0;\n};\n\n// This is currently not being used, but we'll keep it around for when we\n// want a fallback mechanism - i.e. use localStorage if it exists, else fall\n// back to cookies.\nfn.localStorageIsNotSupported = function() {\n const test = 'test';\n\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return false;\n } catch (e) {\n return true;\n }\n};\n\nfn.supportsPushState = function(win) {\n win = win || window;\n return !!(win.history && win.history.pushState);\n};\n\nfn.isIE = function() {\n return /(msie|trident)/i.test(navigator.userAgent);\n};\n\nfn.isFirefox = function() {\n return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n};\n\nfn.isEdge = function() {\n // This is to just check for windows edge. Mac edge - chromium based's UA is 'edg'.\n return navigator.userAgent.toLowerCase().indexOf('edge') > -1;\n};\n\nfn.isSafari = function() {\n // Chrome has safari in its useragent string so adding this extra check.\n return (\n navigator.userAgent.toLowerCase().indexOf('safari') > -1 &&\n navigator.userAgent.toLowerCase().indexOf('chrome') === -1\n );\n};\n\nfn.isMac = function() {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n};\n\n\nfn.isAndroid = function() {\n // Windows Phone also contains \"Android\"\n return /android/i.test(navigator.userAgent) &&\n !/windows phone/i.test(navigator.userAgent);\n};\n\nfn.isIOS = function() {\n // iOS detection from: http://stackoverflow.com/a/9039885/177710\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n};\n\n// Returns a list of languages the user has configured for their browser, in\n// order of preference.\nfn.getUserLanguages = function() {\n // Chrome, Firefox\n if (navigator.languages) {\n return [...navigator.languages];\n }\n\n const languages = [];\n const properties = [\n 'language', // Safari, IE11\n 'userLanguage', // IE\n 'browserLanguage', // IE\n 'systemLanguage' // IE\n ];\n\n properties.forEach(function(property) {\n if (navigator[property]) {\n languages.push(navigator[property]);\n }\n });\n\n return languages;\n};\n\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nfunction log(level, args) {\n // Only log statements in development mode or if\n // throwing an error through console.error\n if (DEBUG || level === 'error') {\n window.console[level].apply(window.console, args);\n }\n}\n\n/**\n * Utility library of logging functions.\n */\nexport default {\n trace: function() {\n return log('trace', arguments);\n },\n\n dir: function() {\n return log('dir', arguments);\n },\n\n time: function() {\n return log('time', arguments);\n },\n\n timeEnd: function() {\n return log('timeEnd', arguments);\n },\n\n group: function() {\n return log('group', arguments);\n },\n\n groupEnd: function() {\n return log('groupEnd', arguments);\n },\n\n assert: function() {\n return log('assert', arguments);\n },\n\n log: function() {\n return log('log', arguments);\n },\n\n info: function() {\n return log('info', arguments);\n },\n\n warn: function() {\n return log('warn', arguments);\n },\n\n error: function() {\n return log('error', arguments);\n },\n\n deprecate: function(msg) {\n return log('warn', ['[okta-signin-widget] DEPRECATED:', msg]);\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nimport config from 'config/config.json';\nimport fetch from 'cross-fetch';\nimport country from 'nls/country.json';\nimport login from 'nls/login.json';\nimport Q from 'q';\nimport _ from 'underscore';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport Logger from 'util/Logger';\nconst STORAGE_KEY = 'osw.languages';\n\ndeclare type i18nOptions = {\n [localeOrCountry: string]: {\n [i18nKey: string]: string;\n }\n}\n\ndeclare type Assets = {\n baseUrl: string;\n rewrite(origPath: string): string;\n}\n\n/**\n * Converts options to our internal format, which distinguishes between\n * login and country bundles.\n *\n * Example options.i18n passed in by the developer:\n * {\n * 'en': {\n * 'needhelp': 'need help override',\n * 'primaryauth.title': 'new sign in text',\n * 'country.JP' = 'Japan, Japan'\n * }\n * }\n *\n * Parsed:\n * {\n * 'en': {\n * 'login': {\n * 'needhelp': 'need help override',\n * 'primaryauth.title': 'new sign in text',\n * },\n * 'country': {\n * 'JP': 'Japan, Japan'\n * }\n * }\n * }\n */\nfunction parseOverrides(i18n) {\n if (!i18n) {\n return {};\n }\n\n const i18nWithLowerCaseKeys = {};\n\n _.each(_.keys(i18n), function(key) {\n i18nWithLowerCaseKeys[key.toLowerCase()] = i18n[key];\n });\n\n return _.mapObject(i18nWithLowerCaseKeys, function(props) {\n const mapped = { login: {}, country: {} };\n\n if (!_.isObject(props)) {\n throw new Error('Invalid format for \"i18n\"');\n }\n _.each(props, function(val, key) {\n const split = key.split(/^country\\./);\n\n if (split.length > 1) {\n mapped.country[split[1]] = val;\n } else {\n mapped.login[split[0]] = val;\n }\n });\n return mapped;\n });\n}\n\n// Caching: We only bundle English by default in the Sign-In Widget. Other\n// languages are loaded on demand and cached in localStorage. These languages\n// are tied to the version of the widget - when it bumps, we reset the cache.\n\nfunction getCachedLanguages() {\n let storage = JSON.parse(localStorage.getItem(STORAGE_KEY));\n\n if (!storage || storage.version !== config.version) {\n storage = {\n version: config.version,\n };\n }\n return storage;\n}\n\nfunction addLanguageToCache(language, loginJson, countryJson) {\n const current = getCachedLanguages();\n\n current[language] = {\n login: loginJson,\n country: countryJson,\n };\n localStorage.setItem(STORAGE_KEY, JSON.stringify(current));\n}\n\n// By default, the assets.bundleUrl is tied to the Okta CDN.\n//\n// There are two overrides available for modifying where we load the asset\n// bundles from:\n//\n// 1. assets.baseUrl\n//\n// This is the base path the OSW pulls assets from, which in this case is\n// the Okta CDN. Override this config option if you want to host the\n// files on your own domain, or if you're using a new version of the\n// widget whose language files haven't been published to the CDN yet.\n//\n// 2. assets.rewrite\n//\n// This is a function that can be used to modify the path + fileName of\n// the bundle we're loading, relative to the baseUrl. When called, it\n// will pass the current path, and expect the new path to be returned.\n// This is useful, for example, if your build process has an extra\n// cachebusting step, i.e:\n//\n// function rewrite(file) {\n// // file: /labels/json/login_ja.json\n// return file.replace('.json', '.' + md5file(file) + '.json');\n// }\n//\n// Note: Most developers will not need to use these overrides - the default\n// is to use the Okta CDN and to use the same path + file structure the\n// widget module publishes by default.\nfunction fetchJson(bundle, language, assets) {\n // Our bundles use _ to separate country and region, i.e:\n // zh-CN -> zh_CN\n const languageCode = language.replace('-', '_');\n\n const path = assets.rewrite(encodeURI(`/labels/json/${bundle}_${languageCode}.json`));\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'text/plain',\n };\n\n const mode = 'no-cors';\n\n return fetch(assets.baseUrl + path, {\n method: 'GET',\n headers,\n mode,\n })\n .then(res => res.text())\n .then(txt => JSON.parse(txt));\n}\n\nfunction getBundles(language, assets, supportedLanguages) {\n // Two special cases:\n // 1. Default language is already bundled with the widget\n // 2. If the language is not in our config file, it means that they've\n // probably defined it on their own.\n if (language === config.defaultLanguage || !_.contains(supportedLanguages, language)) {\n return Q({});\n }\n\n //local storage does not work correctly with android web views (embeded browers)\n //so skip the caching and just make the request to get the local info\n const localStorageIsSupported = !BrowserFeatures.localStorageIsNotSupported();\n\n if (localStorageIsSupported) {\n const cached = getCachedLanguages();\n\n if (cached[language]) {\n return Q(cached[language]);\n }\n }\n\n return Q.all([fetchJson('login', language, assets), fetchJson('country', language, assets)])\n .spread(function(loginJson, countryJson) {\n if (localStorageIsSupported) {\n addLanguageToCache(language, loginJson, countryJson);\n }\n return { login: loginJson, country: countryJson };\n })\n .catch(function() {\n // If there is an error, this will default to the bundled language and\n // we will no longer try to load the language this session.\n Logger.warn('Unable to load language: ' + language);\n return {};\n });\n}\n\nexport default {\n login: login,\n country: country,\n // Courage components within the sign in widget point to courage bundle to look\n // up i18nkeys. Since we dont have courage.properties inside the sign in widget\n // we are pointing courage bundle to login.\n courage: login,\n\n currentLanguage: null,\n\n isLoaded: function(language: string): boolean {\n return this.currentLanguage === language;\n },\n\n remove: function(): void {\n this.currentLanguage = null;\n },\n\n loadLanguage: function(language: string, overrides: i18nOptions, assets: Assets, supportedLanguages: string[]): Q.Promise {\n const parsedOverrides = parseOverrides(overrides);\n const lowerCaseLanguage = language.toLowerCase();\n return getBundles(language, assets, supportedLanguages).then(bundles => {\n // Always extend from the built in defaults in the event that some\n // properties are not translated\n this.login = _.extend({}, login, bundles.login);\n this.country = _.extend({}, country, bundles.country);\n this.courage = _.extend({}, login, bundles.login);\n if (parsedOverrides[lowerCaseLanguage]) {\n _.extend(this.login, parsedOverrides[lowerCaseLanguage]['login']);\n _.extend(this.country, parsedOverrides[lowerCaseLanguage]['country']);\n _.extend(this.courage, parsedOverrides[lowerCaseLanguage]['login']);\n }\n this.currentLanguage = language;\n });\n },\n};\n","import oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport Bundles from '@okta/okta-i18n-bundles';\n\nconst entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': '\\'',\n ''': '\\'',\n '/': '/'\n};\nconst emailValidator = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(?!-)((\\[?[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]?)|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/**\n* Converts the locale code identifier from \"${languageCode}-${countryCode}\" to \"${languageCode}_${countryCode}\"\n* Follows the ISO-639-1 language code and 2-letter ISO-3166-1-alpha-2 country code structure.\n* @param {String} locale code identifier\n* @return {String} converted locale code identifier\n*/\n\nconst parseLocale = locale => {\n if (/-/.test(locale)) {\n const parts = locale.split('-');\n parts[1] = parts[1].toUpperCase();\n return parts.join('_');\n }\n\n return locale;\n};\n/* eslint max-len: 0*/\n\n/**\n * Returns the user's locale as defined by window.okta.locale\n */\n\n\nfunction getRawLocale() {\n return window && window.okta && window.okta.locale || 'en';\n}\n/**\n * Returns the language bundle based on the current locale.\n * - If a locale is not provided, default to English ('en')\n * - Legacy Support: If the named language bundle does not exist, fall back to the default named bundle.\n *\n * @param {*} bundleName\n */\n\n\nfunction getBundle(bundleName) {\n if (!bundleName) {\n return Bundles[oktaUnderscore.keys(Bundles)[0]];\n }\n\n const locale = parseLocale(getRawLocale());\n return Bundles[`${bundleName}_${locale}`] || Bundles[bundleName];\n}\n/**\n *\n * CustomEvent polyfill for IE\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#polyfill\n */\n\n\nfunction IECustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n}\n/**\n * Call the window.okta.emitL10nError function if it is defined\n * @param {String} key The i18n key\n * @param {String} bundleName The i18n bundle name\n * @param {String} reason Could be 'bundle' (Bundle not found), 'key' (Key not found) or 'parameters' (Parameters mismatch).\n */\n\n\nfunction emitL10nError(key, bundleName, reason) {\n // CustomEvent polyfill for IE\n if (!window.CustomEvent) {\n window.CustomEvent = IECustomEvent;\n } // dispatchEvent for sentry\n\n\n if (typeof window.CustomEvent === 'function') {\n const event = new CustomEvent('okta-i18n-error', {\n detail: {\n type: 'l10n-error',\n key: key,\n bundleName: bundleName,\n reason: reason\n }\n });\n document.dispatchEvent(event);\n }\n}\n\nconst StringUtil =\n/** @lends module:Okta.internal.util.StringUtil */\n{\n /** @static */\n getRawLocale: function () {\n return getRawLocale();\n },\n\n /** @static */\n getParsedLocale: function () {\n return parseLocale(getRawLocale());\n },\n\n /** @static */\n isLocaleBundleExist: function (bundleName, locale) {\n const parsedLocale = parseLocale(locale);\n return !!Bundles[`${bundleName}_${parsedLocale}`];\n },\n\n /** @static */\n sprintf: function () {\n const args = Array.prototype.slice.apply(arguments);\n let value = args.shift();\n let oldValue = value;\n /* eslint max-statements: [2, 15] */\n\n function triggerError() {\n throw new Error('Mismatch number of variables: ' + arguments[0] + ', ' + JSON.stringify(args));\n }\n\n for (var i = 0, l = args.length; i < l; i++) {\n const entity = args[i];\n const regex = new RegExp('\\\\{' + i + '\\\\}', 'g');\n value = value.replace(regex, entity);\n\n if (entity === undefined || entity === null || value === oldValue) {\n triggerError();\n }\n\n oldValue = value;\n }\n\n if (/\\{[\\d+]\\}/.test(value)) {\n triggerError();\n }\n\n return value;\n },\n\n /**\n * Converts a URI encoded query string into a hash map\n * @param {String} query The query string\n * @return {Object} The map\n * @static\n * @example\n * StringUtil.parseQuery('foo=bar&baz=qux') // {foo: 'bar', baz: 'qux'}\n */\n parseQuery: function (query) {\n const params = {};\n const pairs = decodeURIComponent(query.replace(/\\+/g, ' ')).split('&');\n\n for (var i = 0; i < pairs.length; i++) {\n const pair = pairs[i];\n const data = pair.split('=');\n params[data.shift()] = data.join('=');\n }\n\n return params;\n },\n\n /** @static */\n encodeJSObject: function (jsObj) {\n return encodeURIComponent(JSON.stringify(jsObj));\n },\n\n /** @static */\n decodeJSObject: function (jsObj) {\n try {\n return JSON.parse(decodeURIComponent(jsObj));\n } catch (e) {\n return null;\n }\n },\n\n /** @static */\n unescapeHtml: function (string) {\n return String(string).replace(/&[\\w#\\d]{2,};/g, function (s) {\n return entityMap[s] || s;\n });\n },\n\n /**\n * Get the original i18n template directly without string format with parameters\n * @param {String} key The key\n * @param {String} bundle=\"messages\"] The name of the i18n bundle. Defaults to the first bundle in the list.\n */\n getTemplate: function (key, bundleName) {\n const bundle = getBundle(bundleName);\n\n if (!bundle) {\n emitL10nError(key, bundleName, 'bundle');\n return 'L10N_ERROR[' + bundleName + ']';\n }\n\n if (bundle[key]) {\n return bundle[key];\n } else {\n emitL10nError(key, bundleName, 'key');\n return 'L10N_ERROR[' + key + ']';\n }\n },\n\n /**\n * Translate a key to the localized value\n * @static\n * @param {String} key The key\n * @param {String} [bundle=\"messages\"] The name of the i18n bundle. Defaults to the first bundle in the list.\n * @param {Array} [params] A list of parameters to apply as tokens to the i18n value\n * @return {String} The localized value\n */\n localize: function (key, bundleName, params) {\n const bundle = getBundle(bundleName);\n /* eslint complexity: [2, 6] */\n\n if (!bundle) {\n emitL10nError(key, bundleName, 'bundle');\n return 'L10N_ERROR[' + bundleName + ']';\n }\n\n let value = bundle[key];\n\n try {\n params = params && params.slice ? params.slice(0) : [];\n params.unshift(value);\n value = StringUtil.sprintf.apply(null, params);\n\n if (value) {\n return value;\n } else {\n emitL10nError(key, bundleName, 'key');\n return 'L10N_ERROR[' + key + ']';\n }\n } catch (e) {\n emitL10nError(key, bundleName, 'parameters');\n return 'L10N_ERROR[' + key + ']';\n }\n },\n\n /**\n * Convert a string to a float if valid, otherwise return the string.\n * Valid numbers may contain a negative sign and a decimal point.\n * @static\n * @param {String} string The string to convert to a number\n * @return {String|Number} Returns a number if the string can be casted, otherwise returns the original string\n */\n parseFloat: function (string) {\n const number = +string;\n return typeof string === 'string' && number === parseFloat(string) ? number : string;\n },\n\n /**\n * Convert a string to an integer if valid, otherwise return the string\n * @static\n * @param {String} string The string to convert to an integer\n * @return {String|integer} Returns an integer if the string can be casted, otherwise, returns the original string\n */\n parseInt: function (string) {\n const int = +string;\n return oktaUnderscore.isString(string) && int === parseInt(string, 10) ? int : string;\n },\n\n /**\n * Convert a string to an object if valid, otherwise return the string\n * @static\n * @param {String} string The string to convert to an object\n * @return {String|object} Returns an object if the string can be casted, otherwise, returns the original string\n */\n parseObject: function (string) {\n if (!oktaUnderscore.isString(string)) {\n return string;\n }\n\n try {\n const object = JSON.parse(string);\n return oktaJQueryStatic.isPlainObject(object) ? object : string;\n } catch (e) {\n return string;\n }\n },\n\n /**\n * Returns a random string from [a-z][A-Z][0-9] of a given length\n * @static\n * @param {Number} length The length of the random string.\n * @return {String} Returns a random string from [a-z][A-Z][0-9] of a given length\n */\n randomString: function (length) {\n const characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n\n if (length === undefined) {\n length = oktaUnderscore.random(characters.length);\n } else if (length === 0) {\n return '';\n }\n\n const stringArray = [];\n\n while (length--) {\n stringArray.push(characters[oktaUnderscore.random(characters.length - 1)]);\n }\n\n return stringArray.join('');\n },\n\n /**\n * Returns if a str ends with another string\n * @static\n * @param {String} str The string to search\n * @param {String} ends The string it should end with\n *\n * @return {Boolean} Returns if the str ends with ends\n */\n endsWith: function (str, ends) {\n str += '';\n ends += '';\n return str.length >= ends.length && str.substring(str.length - ends.length) === ends;\n },\n\n /** @static */\n isEmail: function (str) {\n const target = oktaJQueryStatic.trim(str);\n return !oktaUnderscore.isEmpty(target) && emailValidator.test(target);\n }\n};\n\nexport { StringUtil as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport StringUtil from './StringUtil.js';\n\nconst loc = StringUtil.localize;\nconst SchemaUtils = {\n STRING: 'string',\n NUMBER: 'number',\n INTEGER: 'integer',\n BOOLEAN: 'boolean',\n OBJECT: 'object',\n FORMATDISPLAYTYPE: {\n 'date-time': 'date',\n uri: 'uri',\n email: 'email',\n // TODO: settle on using EITHER underscores OR hyphens --- not both (OKTA-202818)\n 'country-code': 'country-code',\n 'language-code': 'language-code',\n 'country_code': 'country_code',\n 'language_code': 'language_code',\n locale: 'locale',\n timezone: 'timezone',\n 'ref-id': 'reference'\n },\n ARRAYDISPLAYTYPE: {\n arrayofobject: 'arrayofobject',\n arrayofstring: 'arrayofstring',\n arrayofnumber: 'arrayofnumber',\n arrayofinteger: 'arrayofinteger',\n 'arrayofref-id': 'arrayofref-id'\n },\n DISPLAYTYPES: {\n date: {\n type: 'string',\n format: 'date-time'\n },\n uri: {\n type: 'string',\n format: 'uri'\n },\n email: {\n type: 'string',\n format: 'email'\n },\n // TODO: Resolve inconsistencies in hyphens vs. underscores for these properties (OKTA-202818)\n // use country-code if attribute should be restricted to country code type\n 'country-code': {\n type: 'string',\n format: 'country-code'\n },\n 'language-code': {\n type: 'string',\n format: 'language-code'\n },\n 'country_code': {\n type: 'string'\n },\n 'language_code': {\n type: 'string'\n },\n locale: {\n type: 'string',\n format: 'locale'\n },\n timezone: {\n type: 'string',\n format: 'timezone'\n },\n string: {\n type: 'string'\n },\n number: {\n type: 'number'\n },\n boolean: {\n type: 'boolean'\n },\n integer: {\n type: 'integer'\n },\n reference: {\n type: 'string',\n format: 'ref-id'\n },\n arrayofobject: {\n type: 'array',\n items: {\n type: 'object'\n }\n },\n arrayofstring: {\n type: 'array',\n items: {\n type: 'string'\n }\n },\n arrayofnumber: {\n type: 'array',\n items: {\n type: 'number'\n }\n },\n arrayofinteger: {\n type: 'array',\n items: {\n type: 'integer'\n }\n },\n 'arrayofref-id': {\n type: 'array',\n items: {\n type: 'string',\n format: 'ref-id'\n }\n },\n image: {\n type: 'image'\n },\n password: {\n type: 'string'\n }\n },\n SUPPORTSMINMAX: ['string', 'number', 'integer', 'password'],\n SUPPORTENUM: ['string', 'number', 'integer', 'object', 'arrayofstring', 'arrayofnumber', 'arrayofinteger', 'arrayofobject'],\n DATATYPE: {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n integer: 'integer',\n date: 'datetime',\n object: 'object',\n arrayofobject: 'object array',\n arrayofstring: 'string array',\n arrayofnumber: 'number array',\n arrayofinteger: 'integer array',\n 'arrayofref-id': 'reference array',\n // TODO: settle on using EITHER underscores OR hyphens --- not both (OKTA-202818)\n 'country-code': 'country code',\n 'language-code': 'language code',\n 'country_code': 'country code',\n 'language_code': 'language code',\n reference: 'reference',\n timezone: 'timezone',\n image: 'image'\n },\n MUTABILITY: {\n READONLY: 'READ_ONLY',\n WRITEONLY: 'WRITE_ONLY',\n READWRITE: 'READ_WRITE',\n IMMUTABLE: 'IMMUTABLE'\n },\n SCOPE: {\n NONE: 'NONE',\n SELF: 'SELF',\n SYSTEM: 'SYSTEM'\n },\n DISPLAYSCOPE: {\n SELF: 'User personal',\n SYSTEM: 'System',\n NA: 'None'\n },\n UNION: {\n DISABLE: 'DISABLE',\n ENABLE: 'ENABLE'\n },\n UNION_OPTIONS: {\n DISABLE: loc('universal-directory.profiles.attribute.form.union.enable.display', 'courage'),\n ENABLE: loc('universal-directory.profiles.attribute.form.union.disable.display', 'courage')\n },\n PERMISSION: {\n HIDE: 'HIDE',\n READ_ONLY: 'READ_ONLY',\n WRITE_ONLY: 'WRITE_ONLY',\n READ_WRITE: 'READ_WRITE'\n },\n ENDUSER_ATTRIBUTE_PERMISSION_OPTIONS: {\n HIDE: loc('universal-directory.profiles.attribute.enduser.permission.hide', 'courage'),\n READ_ONLY: loc('universal-directory.profiles.attribute.enduser.permission.readonly', 'courage'),\n READ_WRITE: loc('universal-directory.profiles.attribute.enduser.permission.readwrite', 'courage')\n },\n ATTRIBUTE_LEVEL_MASTERING_OPTIONS: {\n INHERIT: loc('universal-directory.profiles.attribute.source.inherit', 'courage'),\n // eslint-disable-next-line @okta/okta/no-exclusive-language\n OKTA_MASTERED: loc('universal-directory.profiles.attribute.source.oktamastered', 'courage'),\n OVERRIDE: loc('universal-directory.profiles.attribute.source.override', 'courage')\n },\n USERNAMETYPE: {\n NONE: 'non-username',\n OKTA_TO_APP: 'okta-to-app-username',\n OKTA_TO_AD: 'okta-to-ad-username',\n APP_TO_OKTA: 'app-to-okta-username',\n IDP_TO_OKTA: 'idp-to-okta-username'\n },\n LOGINPATTERNFORMAT: {\n EMAIL: 'EMAIL',\n CUSTOM: 'CUSTOM',\n NONE: 'NONE'\n },\n UNIQUENESS: {\n NOT_UNIQUE: 'NOT_UNIQUE',\n PENDING_UNIQUENESS: 'PENDING_UNIQUENESS',\n UNIQUE_VALIDATED: 'UNIQUE_VALIDATED'\n },\n\n /*\n * Get a display string for a schema attribute type.\n * @param {String} type Type of an attribute\n * @param {String} format Format of an attribute\n * @param {String} itemType Item type of an attribute if an array\n * @param {String} defaultValue The default value if an attribute type is undefined\n * @return {String} the display value\n */\n getDisplayType: function (type, format, itemType, defaultValue) {\n let displayType; // type is undefined for\n // - an un-mapped source attribute from mapping\n // - an source attribute which is mapped to username target attribute\n\n if (type) {\n // format is only defined for complicated types (ex. reference, date time, array)\n // not for simple types (ex. string, integer, boolean)\n if (format) {\n displayType = this.FORMATDISPLAYTYPE[format];\n } else {\n // itemType is only defined for array type\n // to specify an array element type (ex. string, integer, number)\n displayType = itemType ? this.ARRAYDISPLAYTYPE[type + 'of' + itemType] : type;\n }\n }\n\n if (!displayType) {\n displayType = typeof defaultValue === 'undefined' ? '' : defaultValue;\n }\n\n return displayType;\n },\n\n /*\n * Get attribute mapping source attribute username type\n * @param {String} mappingDirection\n * @param {String} targetName The mapping target attribute name\n * @param {String} appName The app name that's mapped to/from Okta\n * @return {String} the source attribute username type value\n */\n getSourceUsernameType: function (mappingDirection, targetName, appName) {\n let sourceUsernameType = this.USERNAMETYPE.NONE;\n /* eslint complexity: [2, 7] */\n\n if (mappingDirection === 'oktaToApp') {\n if (targetName === 'userName') {\n sourceUsernameType = this.USERNAMETYPE.OKTA_TO_APP;\n } else if (targetName === 'cn') {\n sourceUsernameType = this.USERNAMETYPE.OKTA_TO_AD;\n }\n } else if (mappingDirection === 'appToOkta' && targetName === 'login') {\n if (appName === 'saml_idp') {\n sourceUsernameType = this.USERNAMETYPE.IDP_TO_OKTA;\n } else {\n sourceUsernameType = this.USERNAMETYPE.APP_TO_OKTA;\n }\n }\n\n return sourceUsernameType;\n },\n isArrayDataType: function (type) {\n return oktaUnderscore.contains(oktaUnderscore.values(this.ARRAYDISPLAYTYPE), type);\n },\n isObjectDataType: function (type) {\n return this.DATATYPE.object === type;\n }\n};\n\nexport { SchemaUtils as default };\n","import oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport SchemaUtils from '../../../util/SchemaUtil.js';\nimport StringUtil from '../../../util/StringUtil.js';\n\n/* eslint max-statements: 0 */\nconst NAME = 'name';\nconst ENUM_KEY_PREFIX = '_enum_';\n/**\n * Generate Input Options in order to create an input in an Form for Enum type attribute.\n * @param {Object} config informations for creating input options\n * config.name schema property name\n * config.title schema property title\n * config.readOnly create an read only input?\n * config.explain sub-title to the input\n * config.enumValues list of enum values for creating input options (Dropdown/SimpleCheckBoxSet)\n * config.displayType display type of schema property\n *\n * @return {Object} inputOptions options for create an Input view. (Dropdown/SimpleCheckBoxSet)\n *\n */\n\nfunction getEnumInputOptions(config) {\n const enumOneOf = convertToOneOf(config.enumValues);\n const inputOptions = {\n name: config.name,\n label: config.title,\n readOnly: config.readOnly,\n customExplain: config.explain,\n params: {\n enumOneOf: enumOneOf\n },\n options: getDropdownOptionsFromOneOf(enumOneOf)\n }; // input type\n\n if (SchemaUtils.isArrayDataType(config.displayType)) {\n inputOptions.type = 'checkboxset';\n inputOptions.to = valuesToEnumObjects;\n inputOptions.from = enumObjectsToValues;\n } else {\n inputOptions.type = 'select';\n inputOptions.to = valueToEnumObject;\n inputOptions.from = enumObjectToValue;\n }\n\n inputOptions.input = null;\n return inputOptions;\n}\n\nfunction getDropdownOptions(values) {\n return oktaUnderscore.isArray(values) ? getDropdownOptionsFromOneOf(convertToOneOf(values)) : {};\n}\n\nfunction getDropdownOptionsFromOneOf(values) {\n if (!isOneOfEnumObject(values)) {\n return {};\n }\n\n return oktaUnderscore.reduce(values, function (options, value, index) {\n options[convertIndexToEnumIndex(index)] = value.title;\n return options;\n }, {});\n}\n\nfunction convertToOneOf(values) {\n // assume this is a legacy enum array and convert to oneOf object\n if (!oktaUnderscore.all(values, oktaJQueryStatic.isPlainObject)) {\n return convertEnumToOneOf(values); // we assume object without const and title is an enum object which need special conversion\n } else if (!isOneOfEnumObject(values)) {\n return convertEnumObjectToOneOf(values);\n }\n\n return values;\n}\n\nfunction isOneOfEnumObject(values) {\n return oktaUnderscore.isArray(values) && oktaUnderscore.all(values, function (value) {\n return oktaUnderscore.has(value, 'const') && oktaUnderscore.has(value, 'title');\n });\n}\n\nfunction convertEnumToOneOf(values) {\n return oktaUnderscore.map(values, function (value) {\n return {\n const: value,\n title: valueToTitle(value)\n };\n });\n}\n\nfunction valueToTitle(value) {\n if (oktaUnderscore.isObject(value)) {\n return JSON.stringify(value);\n }\n\n if (oktaUnderscore.isNumber(value)) {\n return value + '';\n }\n\n return value;\n}\n\nfunction convertEnumObjectToOneOf(values) {\n const findKey = oktaUnderscore.partial(oktaUnderscore.has, oktaUnderscore, NAME); // If all object found the key NAME, use the NAME's value as display name\n\n\n if (oktaUnderscore.all(values, findKey)) {\n return oktaUnderscore.chain(values).filter(function (value) {\n return oktaJQueryStatic.isPlainObject(value) && oktaUnderscore.has(value, NAME);\n }).map(function (value) {\n return {\n const: value,\n title: value[NAME]\n };\n }).value();\n } // Assume a legacy object array does not need special handling and just convert to const/title enum\n\n\n return convertEnumToOneOf(values);\n}\n\nfunction convertIndexToEnumIndex(index) {\n return `${ENUM_KEY_PREFIX}${index}`;\n}\n\nfunction enumObjectToValue(obj) {\n const index = oktaUnderscore.findIndex(this.options.params.enumOneOf, function (oneOfObj) {\n return oktaUnderscore.isObject(obj) ? oktaUnderscore.isEqual(oneOfObj.const, obj) : oneOfObj.const === obj;\n }); // Cannot rely on comparator in findIndex when compare objects so need special handling\n\n\n return index > -1 ? convertIndexToEnumIndex(index) : obj;\n}\n\nfunction valueToEnumObject(val) {\n if (!oktaUnderscore.isString(val) || val.indexOf(ENUM_KEY_PREFIX) !== 0) {\n return val;\n }\n\n const index = val.replace(ENUM_KEY_PREFIX, '');\n const enumValue = this.options.params && oktaUnderscore.isArray(this.options.params.enumOneOf) ? this.options.params.enumOneOf[index] : null; // @see `getEnumInputOptions` how enumValues has been set.\n\n return oktaUnderscore.has(enumValue, 'const') ? enumValue.const : enumValue;\n}\n\nfunction valuesToEnumObjects(values) {\n return oktaUnderscore.map(values, valueToEnumObject.bind(this));\n}\n\nfunction enumObjectsToValues(values) {\n return oktaUnderscore.map(values, enumObjectToValue.bind(this));\n}\n\nfunction isStringConstraint(value) {\n return oktaUnderscore.isString(value) && oktaJQueryStatic.trim(value) !== '';\n}\n\nfunction isNumberConstraint(value) {\n return oktaUnderscore.isNumber(value) || oktaUnderscore.isNumber(StringUtil.parseFloat(oktaJQueryStatic.trim(value)));\n}\n\nfunction isIntegerConstraint(value) {\n const integer = oktaUnderscore.isNumber(value) ? value : StringUtil.parseInt(oktaJQueryStatic.trim(value));\n return typeof integer === 'number' && isFinite(integer) && Math.floor(integer) === integer;\n}\n\nfunction isObjectConstraint(value) {\n if (oktaUnderscore.isObject(value) && !oktaUnderscore.isArray(value)) {\n return true;\n }\n\n const object = StringUtil.parseObject(oktaJQueryStatic.trim(value));\n return oktaUnderscore.isObject(object) && !oktaUnderscore.isArray(object);\n}\n\nfunction isConstraintValueMatchType(value, type) {\n switch (type) {\n case SchemaUtils.STRING:\n return isStringConstraint(value);\n\n case SchemaUtils.NUMBER:\n return isNumberConstraint(value);\n\n case SchemaUtils.INTEGER:\n return isIntegerConstraint(value);\n\n case SchemaUtils.OBJECT:\n return isObjectConstraint(value);\n }\n}\n\nvar EnumTypeHelper = {\n getEnumInputOptions: getEnumInputOptions,\n getDropdownOptions: getDropdownOptions,\n convertToOneOf: convertToOneOf,\n isConstraintValueMatchType: isConstraintValueMatchType\n};\n\nexport { EnumTypeHelper as default };\n","import oktaJQueryStatic from '../util/jquery-wrapper.js';\nimport oktaUnderscore from '../util/underscore-wrapper.js';\nimport BaseCollection from './BaseCollection.js';\nimport BaseModel from './BaseModel.js';\nimport Logger from '../util/Logger.js';\nimport SchemaUtils from '../util/SchemaUtil.js';\nimport StringUtil from '../util/StringUtil.js';\nimport EnumTypeHelper from '../views/forms/helpers/EnumTypeHelper.js';\n\n/* eslint-disable @okta/okta/no-exclusive-language */\nconst loc = StringUtil.localize;\nconst STRING = SchemaUtils.STRING;\nconst NUMBER = SchemaUtils.NUMBER;\nconst INTEGER = SchemaUtils.INTEGER;\nconst OBJECT = SchemaUtils.OBJECT;\n\nconst getArrayTypeName = function (type, elementType) {\n return type + 'of' + elementType;\n};\n\nconst SchemaPropertySubSchema = BaseModel.extend({\n defaults: {\n description: undefined,\n minLength: undefined,\n maxLength: undefined,\n format: undefined\n },\n parse: function (resp) {\n if (oktaUnderscore.isString(resp.format)) {\n const matcher = /^\\/(.+)\\/$/.exec(resp.format);\n\n if (matcher) {\n resp.format = matcher[1];\n }\n }\n\n return resp;\n }\n});\nconst SchemaPropertySubSchemaCollection = BaseCollection.extend({\n model: SchemaPropertySubSchema\n});\nconst SchemaPropertySubSchemaAllOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'allOf'\n});\nconst SchemaPropertySubSchemaOneOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'oneOf'\n});\nconst SchemaPropertySubSchemaNoneOfCollection = SchemaPropertySubSchemaCollection.extend({\n _type: 'noneOf'\n});\nconst constraintTypeErrorMessages = {\n string: loc('schema.validation.field.value.must.string', 'courage'),\n number: loc('schema.validation.field.value.must.number', 'courage'),\n integer: loc('schema.validation.field.value.must.integer', 'courage'),\n object: loc('schema.validation.field.value.must.object', 'courage')\n};\nconst loginFormatNonePattern = '.+';\nconst escapedLoginCharsRe = /[^a-zA-Z0-9-]/;\nconst constraintHandlers = {\n between: '_checkBetweenConstraints',\n greaterThan: '_checkGreaterThanConstraint',\n lessThan: '_checkLessThanConstraint',\n equals: '_checkEqualsConstraint'\n};\nconst SchemaPropertySchemaProperty = BaseModel.extend({\n idAttribute: 'name',\n local: {\n __oneOf__: {\n type: 'array',\n minItems: 1\n }\n },\n defaults: {\n // OKTA-28445, set empty string by default as the key for each property when syncing with server\n // so that server can respond with error when a name is not provided\n name: '',\n title: undefined,\n type: undefined,\n description: undefined,\n required: false,\n format: undefined,\n // choose disable option be default.\n union: undefined,\n subSchemas: undefined,\n settings: {\n permissions: {\n SELF: SchemaUtils.PERMISSION.READ_ONLY\n }\n },\n unique: undefined,\n __metadata__: undefined,\n __isSensitive__: BaseModel.ComputedProperty(['settings'], function (settings) {\n return !!(settings && settings.sensitive && settings.sensitive !== 'NOT_SENSITIVE');\n }),\n __isPendingSensitive__: BaseModel.ComputedProperty(['settings'], function (settings) {\n return !!(settings && settings.sensitive && settings.sensitive === 'PENDING_SENSITIVE');\n }),\n __unique__: false,\n __isUniqueValidated__: BaseModel.ComputedProperty(['unique'], function (unique) {\n return unique === SchemaUtils.UNIQUENESS.UNIQUE_VALIDATED;\n }),\n __isPendingUniqueness__: BaseModel.ComputedProperty(['unique'], function (unique) {\n return unique === SchemaUtils.UNIQUENESS.PENDING_UNIQUENESS;\n }),\n __isUniqueness__: BaseModel.ComputedProperty(['__isUniqueValidated__', '__isPendingUniqueness__'], function (isValidated, isPending) {\n return isValidated || isPending;\n }),\n __canBeSensitive__: BaseModel.ComputedProperty(['__metadata__'], function (metadata) {\n return !!(metadata && metadata.sensitivizable);\n }),\n __userPermission__: SchemaUtils.PERMISSION.READ_ONLY,\n __displayType__: undefined,\n __displayTypeLabel__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return SchemaUtils.DATATYPE[displayType] || displayType;\n }),\n __supportsMinMax__: false,\n // use the private naming convention for these computed properties,\n // to deal with the complexity in cloning schema with properties (toJSON({verbose: true})),\n // to make sure these attributes are being excluded from api request\n __isReadOnly__: BaseModel.ComputedProperty(['mutability'], function (mutability) {\n return mutability === SchemaUtils.MUTABILITY.READONLY;\n }),\n __isWriteOnly__: BaseModel.ComputedProperty(['mutability'], function (mutability) {\n return mutability === SchemaUtils.MUTABILITY.WRITEONLY;\n }),\n __displayScope__: undefined,\n __isScopeSelf__: BaseModel.ComputedProperty(['scope'], function (scope) {\n return scope === SchemaUtils.SCOPE.SELF;\n }),\n __isNoneScopeArrayType__: BaseModel.ComputedProperty(['__isScopeSelf__', '__displayType__'], function (isScopeSelf, displayType) {\n return !isScopeSelf && SchemaUtils.isArrayDataType(displayType);\n }),\n __isImported__: BaseModel.ComputedProperty(['externalName'], function (externalName) {\n return !!externalName;\n }),\n __isFromBaseSchema__: BaseModel.ComputedProperty(['__schemaMeta__'], function (schemaMeta) {\n return schemaMeta && schemaMeta.name === 'base';\n }),\n // Only UI can turn on __enumDefined__ and reprocess the enum/oneOf value; otherwise,\n // it should leave existing value untouch\n __enumDefined__: false,\n __supportEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains(SchemaUtils.SUPPORTENUM, displayType);\n }),\n __isNumberTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.NUMBER, SchemaUtils.ARRAYDISPLAYTYPE.arrayofnumber], displayType);\n }),\n __isIntegerTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.INTEGER, SchemaUtils.ARRAYDISPLAYTYPE.arrayofinteger], displayType);\n }),\n __isObjectTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.OBJECT, SchemaUtils.ARRAYDISPLAYTYPE.arrayofobject], displayType);\n }),\n __isStringTypeEnum__: BaseModel.ComputedProperty(['__displayType__'], function (displayType) {\n return oktaUnderscore.contains([SchemaUtils.STRING, SchemaUtils.ARRAYDISPLAYTYPE.arrayofstring], displayType);\n }),\n __enumConstraintType__: BaseModel.ComputedProperty(['__isStringTypeEnum__', '__isNumberTypeEnum__', '__isIntegerTypeEnum__', '__isObjectTypeEnum__'], function (isStringType, isNumberType, isIntegerType, isObjectType) {\n if (isStringType) {\n return STRING;\n }\n\n if (isNumberType) {\n return NUMBER;\n }\n\n if (isIntegerType) {\n return INTEGER;\n }\n\n if (isObjectType) {\n return OBJECT;\n }\n }),\n __isEnumDefinedAndSupported__: BaseModel.ComputedProperty(['__enumDefined__', '__supportEnum__'], function (enumDefined, supportEnum) {\n return enumDefined && supportEnum;\n }),\n __isLoginOfBaseSchema__: BaseModel.ComputedProperty(['__isFromBaseSchema__', 'name'], function (isFromBaseSchema, name) {\n return isFromBaseSchema && name === 'login';\n }),\n __isLoginFormatRestrictionToEmail__: BaseModel.ComputedProperty(['__loginFormatRestriction__'], function (loginFormatRestriction) {\n return loginFormatRestriction === SchemaUtils.LOGINPATTERNFORMAT.EMAIL;\n })\n },\n initialize: function () {\n BaseModel.prototype.initialize.apply(this, arguments);\n this.listenTo(this, 'change:__displayType__', this._updateTypeFormatConstraints);\n this.listenTo(this, 'change:type change:format change:items', this._updateDisplayType);\n this.listenTo(this, 'change:__minVal__ change:__maxVal__', this._updateMinMax);\n this.listenTo(this, 'change:__equals__', this._convertEqualsToMinMax);\n this.listenTo(this, 'change:__constraint__', this._setConstraintText);\n\n this._setConstraintText();\n\n this._setLoginPattern();\n },\n parse: function (resp) {\n /* eslint complexity: [2, 9] */\n resp = oktaUnderscore.clone(resp);\n\n if (resp.type === 'object' && resp.extendedType === 'image') {\n resp.type = 'image';\n }\n\n resp['__displayType__'] = SchemaUtils.getDisplayType(resp.type, resp.format, resp.items ? resp.items.format ? resp.items.format : resp.items.type : undefined);\n\n this._setRangeConstraints(resp);\n\n resp['__supportsMinMax__'] = SchemaUtils.SUPPORTSMINMAX.indexOf(resp['__displayType__']) !== -1;\n resp['__displayScope__'] = SchemaUtils.DISPLAYSCOPE[resp.scope] || SchemaUtils.DISPLAYSCOPE.NA;\n\n if (resp.settings && resp.settings.permissions && resp.settings.permissions.SELF) {\n resp['__userPermission__'] = resp.settings.permissions.SELF;\n }\n\n this._setMasterOverride(resp);\n\n this._setSubSchemas(resp);\n\n this._setUniqueness(resp);\n\n return resp;\n },\n validate: function () {\n const enumValidationError = this._validateEnumOneOf();\n\n if (enumValidationError) {\n return enumValidationError;\n }\n\n if (!this.get('__supportsMinMax__') || !this.get('__constraint__')) {\n return undefined;\n }\n\n const constraitType = this.get('__constraint__');\n const constraitHandler = this[constraintHandlers[constraitType]];\n\n if (oktaUnderscore.isFunction(constraitHandler)) {\n return constraitHandler.call(this);\n } else {\n Logger.warn('No constraint handler found for: ' + constraitType);\n return undefined;\n }\n },\n _checkBetweenConstraints: function () {\n const minVal = this.get('__minVal__');\n const maxVal = this.get('__maxVal__');\n\n if (!minVal && !maxVal) {\n return;\n }\n\n if (!minVal) {\n return {\n __minVal__: 'Min value is required'\n };\n }\n\n if (!maxVal) {\n return {\n __maxVal__: 'Max value is required'\n };\n }\n\n let val = this._checkIntegerConstraints('__minVal__', 'Min value');\n\n if (val) {\n return val;\n }\n\n val = this._checkIntegerConstraints('__maxVal__', 'Max value');\n\n if (val) {\n return val;\n }\n\n if (+minVal >= +maxVal) {\n return {\n __maxVal__: 'Max val must be greater than min val'\n };\n }\n },\n _checkGreaterThanConstraint: function () {\n const minVal = this.get('__minVal__');\n\n if (!minVal) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__minVal__', 'Min value');\n\n if (val) {\n return val;\n }\n },\n _checkLessThanConstraint: function () {\n const maxVal = this.get('__maxVal__');\n\n if (!maxVal) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__maxVal__', 'Max value');\n\n if (val) {\n return val;\n }\n },\n _checkEqualsConstraint: function () {\n const equals = this.get('__equals__');\n\n if (!equals) {\n return;\n }\n\n const val = this._checkIntegerConstraints('__equals__', 'Constraint');\n\n if (val) {\n return val;\n }\n },\n _checkIntegerConstraints: function (field, name) {\n const val = this.get(field);\n const error = {}; // eslint-disable-next-line no-restricted-globals\n\n if (isNaN(val)) {\n error[field] = name + ' must be a number';\n return error;\n }\n\n if (+val < 0) {\n error[field] = name + ' must be greater than 0';\n return error;\n }\n },\n _setMasterOverride: function (resp) {\n if (resp.settings && resp.settings.masterOverride && resp.settings.masterOverride) {\n const masterOverrideValue = resp.settings.masterOverride.value;\n\n if (oktaUnderscore.isArray(masterOverrideValue) && !oktaUnderscore.isEmpty(masterOverrideValue)) {\n resp['__masterOverrideType__'] = 'OVERRIDE';\n resp['__masterOverrideValue__'] = masterOverrideValue || [];\n } else {\n resp['__masterOverrideType__'] = resp.settings.masterOverride.type;\n }\n } else {\n resp['__masterOverrideType__'] = 'INHERIT';\n }\n },\n _setRangeConstraints: function (resp) {\n /* eslint complexity: [2, 11] */\n if (resp['__displayType__'] === STRING) {\n resp['__minVal__'] = resp.minLength;\n resp['__maxVal__'] = resp.maxLength;\n } else if (resp['__displayType__'] === INTEGER || resp['__displayType__'] === NUMBER) {\n resp['__minVal__'] = resp.minimum;\n resp['__maxVal__'] = resp.maximum;\n }\n\n if (resp['__minVal__'] && resp['__maxVal__']) {\n if (resp['__minVal__'] === resp['__maxVal__']) {\n resp['__constraint__'] = 'equals';\n resp['__equals__'] = resp['__minVal__'];\n } else {\n resp['__constraint__'] = 'between';\n }\n } else if (!resp['__minVal__'] && resp['__maxVal__']) {\n resp['__constraint__'] = 'lessThan';\n } else if (!resp['__maxVal__'] && resp['__minVal__']) {\n resp['__constraint__'] = 'greaterThan';\n }\n },\n _setSubSchemas: function (resp) {\n if (resp.allOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaAllOfCollection(resp.allOf, {\n parse: true\n });\n } else if (resp.oneOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaOneOfCollection(resp.oneOf, {\n parse: true\n });\n } else if (resp.noneOf) {\n resp['subSchemas'] = new SchemaPropertySubSchemaNoneOfCollection(resp.noneOf, {\n parse: true\n });\n }\n },\n _setUniqueness: function (resp) {\n const unique = resp && resp.unique;\n resp['__unique__'] = !!(unique && (unique === SchemaUtils.UNIQUENESS.UNIQUE_VALIDATED || unique === SchemaUtils.UNIQUENESS.PENDING_UNIQUENESS));\n },\n _setLoginPattern: function () {\n if (!this.get('__isLoginOfBaseSchema__')) {\n return;\n }\n\n const pattern = this.get('pattern');\n\n if (pattern === loginFormatNonePattern) {\n this.set('__loginFormatRestriction__', SchemaUtils.LOGINPATTERNFORMAT.NONE);\n } else if (pattern) {\n this.set('__loginFormatRestriction__', SchemaUtils.LOGINPATTERNFORMAT.CUSTOM);\n this.set('__loginFormatRestrictionCustom__', this._extractLoginPattern(pattern));\n } else {\n this.set('__loginFormatRestriction__', SchemaUtils.LOGINPATTERNFORMAT.EMAIL);\n }\n },\n _updateDisplayType: function () {\n const type = this.get('type');\n\n if (type === STRING && this.get('format')) {\n this.set('__displayType__', SchemaUtils.FORMATDISPLAYTYPE[this.get('format')]);\n } else {\n const items = this.get('items');\n const arraytype = items && (items.format ? items.format : items.type);\n\n if (type && arraytype) {\n this.set('__displayType__', SchemaUtils.ARRAYDISPLAYTYPE[getArrayTypeName(type, arraytype)]);\n } else {\n this.set('__displayType__', type);\n }\n }\n },\n _validateEnumOneOf: function () {\n if (!this.get('__isEnumDefinedAndSupported__')) {\n return;\n }\n\n const enumOneOf = this.get('__oneOf__') || [];\n\n if (oktaUnderscore.isEmpty(enumOneOf)) {\n return {\n __oneOf__: loc('model.validation.field.blank', 'courage')\n };\n }\n\n if (!this._isValidateOneOfConstraint(enumOneOf)) {\n const constraintType = this.get('__enumConstraintType__');\n const errorTypeMsg = constraintTypeErrorMessages[constraintType];\n return {\n __oneOf__: errorTypeMsg\n };\n }\n },\n _isValidateOneOfConstraint: function (values) {\n const constraintType = this.get('__enumConstraintType__');\n return oktaUnderscore.all(values, function (value) {\n return EnumTypeHelper.isConstraintValueMatchType(value.const, constraintType);\n });\n },\n toJSON: function () {\n let json = BaseModel.prototype.toJSON.apply(this, arguments);\n json.settings = {\n permissions: {}\n };\n json.settings.permissions['SELF'] = this.get('__userPermission__'); // omit \"sensitive\" filed will have default it value to false.\n\n if (this.get('__isSensitive__')) {\n json.settings.sensitive = this.get('__isSensitive__');\n }\n\n if (this.get('type') === 'image') {\n json.type = 'object';\n json.extendedType = 'image';\n }\n\n json = this._enumAssignment(json);\n json = this._attributeOverrideToJson(json);\n json = this._normalizeUnionValue(json);\n json = this._patternAssignment(json);\n json = this._uniquenessAssignment(json);\n return json;\n },\n _attributeOverrideToJson: function (json) {\n const masterOverrideType = this.get('__masterOverrideType__');\n const masterOverrideValue = this.get('__masterOverrideValue__');\n\n if (masterOverrideType === 'OKTA_MASTERED') {\n json.settings.masterOverride = {\n type: 'OKTA_MASTERED'\n };\n } else if (masterOverrideType === 'OVERRIDE') {\n json.settings.masterOverride = {\n type: 'ORDERED_LIST',\n value: []\n };\n\n if (masterOverrideValue instanceof BaseCollection) {\n oktaUnderscore.each(masterOverrideValue.toJSON(), function (overrideProfile) {\n json.settings.masterOverride.value.push(overrideProfile.id);\n });\n } else if (masterOverrideValue instanceof Array) {\n json.settings.masterOverride.value = masterOverrideValue;\n }\n\n if (oktaUnderscore.isEmpty(json.settings.masterOverride.value)) {\n delete json.settings.masterOverride;\n }\n }\n\n if (masterOverrideType === 'INHERIT') {\n delete json.settings.masterOverride;\n }\n\n return json;\n },\n\n /**\n * Only allow set \"union\" value when isScopeSelf is NONE and displayType is\n * array of (string/number/integer), otherwise reset to default.\n *\n * @see /universal-directory/shared/views/components/UnionGroupValuesRadio.js\n */\n _normalizeUnionValue: function (json) {\n if (!this.get('__isNoneScopeArrayType__')) {\n json['union'] = undefined;\n }\n\n return json;\n },\n _enumAssignment: function (json) {\n if (!this.get('__isEnumDefinedAndSupported__')) {\n return json;\n } // backfill empty title by constraint\n\n\n const enumOneOf = this._getEnumOneOfWithTitleCheck();\n\n if (this.get('type') === 'array') {\n delete json.items.enum;\n json.items.oneOf = enumOneOf;\n } else {\n delete json.enum;\n json.oneOf = enumOneOf;\n }\n\n return json;\n },\n _patternAssignment: function (json) {\n if (!this.get('__isLoginOfBaseSchema__') || !this.get('__loginFormatRestriction__')) {\n return json;\n }\n\n switch (this.get('__loginFormatRestriction__')) {\n case SchemaUtils.LOGINPATTERNFORMAT.EMAIL:\n delete json.pattern;\n break;\n\n case SchemaUtils.LOGINPATTERNFORMAT.CUSTOM:\n json.pattern = this._buildLoginPattern(this.get('__loginFormatRestrictionCustom__'));\n break;\n\n case SchemaUtils.LOGINPATTERNFORMAT.NONE:\n json.pattern = loginFormatNonePattern;\n break;\n }\n\n return json;\n },\n _uniquenessAssignment: function (json) {\n if (!this.get('__unique__')) {\n delete json.unique;\n } else if (!this.get('__isUniqueness__')) {\n json.unique = SchemaUtils.UNIQUENESS.UNIQUE_VALIDATED;\n }\n\n return json;\n },\n\n /**\n * Character should be escaped except letters, digits and hyphen\n */\n _escapedRegexChar: function (pattern, index) {\n const char = pattern.charAt(index);\n\n if (escapedLoginCharsRe.test(char)) {\n return '\\\\' + char;\n }\n\n return char;\n },\n _buildLoginPattern: function (pattern) {\n let result = '';\n\n for (var i = 0; i < pattern.length; i++) {\n result += this._escapedRegexChar(pattern, i);\n }\n\n return '[' + result + ']+';\n },\n _extractLoginPattern: function (pattern) {\n const re = /^\\[(.*)\\]\\+/;\n const matches = pattern.match(re);\n return matches ? matches[1].replace(/\\\\(.)/g, '$1') : pattern;\n },\n _getEnumOneOfWithTitleCheck: function () {\n const enumOneOf = this.get('__oneOf__');\n return oktaUnderscore.map(enumOneOf, function (value) {\n if (oktaJQueryStatic.trim(value.title) !== '') {\n return value;\n }\n\n value.title = !oktaUnderscore.isString(value.const) ? JSON.stringify(value.const) : value.const;\n return value;\n });\n },\n _updateTypeFormatConstraints: function () {\n const displayType = this.get('__displayType__'); // OKTA-31952 reset format according to its displayType\n\n this.unset('format', {\n silent: true\n });\n this.unset('items', {\n silent: true\n });\n this.set(SchemaUtils.DISPLAYTYPES[displayType]);\n\n if (displayType !== NUMBER && displayType !== INTEGER) {\n this.unset('minimum');\n this.unset('maximum');\n }\n\n if (displayType !== STRING) {\n this.unset('minLength');\n this.unset('maxLength');\n }\n\n this.unset('__minVal__');\n this.unset('__maxVal__');\n this.unset('__equals__');\n this.set('__supportsMinMax__', SchemaUtils.SUPPORTSMINMAX.indexOf(this.get('__displayType__')) !== -1);\n },\n _updateMinMax: function () {\n let min;\n let max;\n const displayType = this.get('__displayType__');\n\n if (displayType === STRING) {\n min = 'minLength';\n max = 'maxLength';\n } else if (displayType === INTEGER || displayType === NUMBER) {\n min = 'minimum';\n max = 'maximum';\n }\n\n if (this.get('__minVal__')) {\n this.set(min, parseInt(this.get('__minVal__'), 10));\n } else {\n this.unset(min);\n }\n\n if (this.get('__maxVal__')) {\n this.set(max, parseInt(this.get('__maxVal__'), 10));\n } else {\n this.unset(max);\n }\n },\n _convertEqualsToMinMax: function () {\n const equals = this.get('__equals__');\n\n if (equals) {\n this.set('__minVal__', equals);\n this.set('__maxVal__', equals);\n }\n },\n\n /*\n Normally we would use a derived property here but derived properties do not work with the model Clone function\n so we use this workaround instead.\n */\n _setConstraintText: function () {\n const constraint = this.get('__constraint__');\n const min = this.get('__minVal__');\n const max = this.get('__maxVal__');\n const equals = this.get('__equals__');\n\n switch (constraint) {\n case 'between':\n this.set('__constraintText__', 'Between ' + min + ' and ' + max);\n break;\n\n case 'greaterThan':\n this.set('__constraintText__', 'Greater than ' + min);\n break;\n\n case 'lessThan':\n this.set('__constraintText__', 'Less than ' + max);\n break;\n\n case 'equals':\n this.set('__constraintText__', 'Equals ' + equals);\n break;\n\n default:\n this.set('__constraintText__', '');\n break;\n }\n },\n cleanup: function () {\n if (this.get('__constraint__') === 'lessThan') {\n this.unset('__minVal__');\n } else if (this.get('__constraint__') === 'greaterThan') {\n this.unset('__maxVal__');\n }\n\n if (this.get('scope') !== SchemaUtils.SCOPE.SYSTEM) {\n if (this.get('__isScopeSelf__') === true) {\n this.set({\n scope: SchemaUtils.SCOPE.SELF\n }, {\n silent: true\n });\n } else {\n this.unset('scope');\n }\n }\n\n if (!this.get('__unique__')) {\n this.unset('unique');\n }\n },\n\n /**\n * Since there is not an dedicated attribute to flag enum type,\n * use enum values to determine whether the property is enum type or not.\n */\n isEnumType: function () {\n return !!this.getEnumValues();\n },\n getEnumValues: function () {\n return this.get('oneOf') || this.get('enum') || this.get('items') && this.get('items')['oneOf'] || this.get('items') && this.get('items')['enum'];\n },\n detectHasEnumDefined: function () {\n const enumValues = this.getEnumValues();\n\n if (!enumValues) {\n return;\n }\n\n this.set('__oneOf__', EnumTypeHelper.convertToOneOf(enumValues));\n this.set('__enumDefined__', true);\n }\n});\nconst SchemaPropertySchemaProperties = BaseCollection.extend({\n model: SchemaPropertySchemaProperty,\n clone: function () {\n return new this.constructor(this.toJSON({\n verbose: true\n }), {\n parse: true\n });\n },\n areAllReadOnly: function () {\n return oktaUnderscore.all(this.pluck('__isReadOnly__'));\n },\n createModelProperties: function () {\n return this.reduce(function (p, schemaProperty) {\n const type = schemaProperty.get('type');\n p[schemaProperty.id] = oktaUnderscore.clone(SchemaUtils.DISPLAYTYPES[type]);\n\n if (SchemaUtils.SUPPORTSMINMAX.indexOf(type) !== -1) {\n p[schemaProperty.id].minLength = schemaProperty.get('minLength');\n p[schemaProperty.id].maxLength = schemaProperty.get('maxLength');\n }\n\n if (type === 'string') {\n p[schemaProperty.id].format = schemaProperty.get('format');\n }\n\n return p;\n }, {});\n }\n});\nvar SchemaProperty = {\n Model: SchemaPropertySchemaProperty,\n Collection: SchemaPropertySchemaProperties\n};\n\nexport { SchemaProperty as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport BaseCollection from './BaseCollection.js';\nimport BaseModel from './BaseModel.js';\nimport SchemaProperty from './SchemaProperty.js';\n\nconst parseProperties = function (resp) {\n const schemaMeta = oktaUnderscore.pick(resp, 'id', 'name', 'displayName');\n\n const properties = oktaUnderscore.map(resp.schema.properties, function (property, name) {\n return oktaUnderscore.extend({\n name: name\n }, property);\n });\n\n oktaUnderscore.each(properties, function (property) {\n property['__schemaMeta__'] = schemaMeta;\n\n if (property.__metadata) {\n property['__metadata__'] = property.__metadata;\n delete property.__metadata;\n }\n });\n\n return properties;\n};\n\nconst BaseSchemaSchema = BaseModel.extend({\n defaults: {\n id: undefined,\n displayName: undefined,\n name: undefined\n },\n constructor: function () {\n this.properties = new SchemaProperty.Collection();\n BaseModel.apply(this, arguments);\n },\n getProperties: function () {\n return this.properties;\n },\n clone: function () {\n const model = BaseModel.prototype.clone.apply(this, arguments);\n model.getProperties().set(this.getProperties().toJSON({\n verbose: true\n }));\n return model;\n },\n parse: function (resp) {\n const properties = parseProperties(resp);\n this.properties.set(properties, {\n parse: true\n });\n return oktaUnderscore.omit(resp, 'schema');\n },\n trimProperty: function (property) {\n return oktaUnderscore.omit(property, 'name');\n },\n toJSON: function () {\n const json = BaseModel.prototype.toJSON.apply(this, arguments);\n json.schema = {\n properties: {}\n };\n this.getProperties().each(function (model) {\n const property = model.toJSON();\n json.schema.properties[property.name] = this.trimProperty(property);\n }, this);\n return json;\n },\n save: function () {\n this.getProperties().each(function (model) {\n model.cleanup();\n });\n return BaseModel.prototype.save.apply(this, arguments);\n }\n});\nconst BaseSchemaSchemas = BaseCollection.extend({\n model: BaseSchemaSchema\n});\nvar BaseSchema = {\n parseProperties: parseProperties,\n Model: BaseSchemaSchema,\n Collection: BaseSchemaSchemas\n};\n\nexport { BaseSchema as default };\n","function log(level, ...args) {\n if (window.console && window.okta && window.okta.debug) {\n window.console[level](...args);\n }\n}\n/**\n * Utility library of logging functions.\n * @class module:Okta.Logger\n */\n\n\nvar Logger = /** @lends module:Okta.Logger */\n{\n /**\n * See [console.trace](https://developer.mozilla.org/en-US/docs/Web/API/Console.trace)\n * @static\n */\n trace: function (...args) {\n return log('trace', ...args);\n },\n\n /**\n * See [console.dir](https://developer.mozilla.org/en-US/docs/Web/API/Console.dir)\n * @static\n */\n dir: function (...args) {\n return log('dir', ...args);\n },\n\n /**\n * See [console.time](https://developer.mozilla.org/en-US/docs/Web/API/Console.time)\n * @static\n */\n time: function (...args) {\n return log('time', ...args);\n },\n\n /**\n * See [console.timeEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console.timeEnd)\n * @static\n */\n timeEnd: function (...args) {\n return log('timeEnd', ...args);\n },\n\n /**\n * See [console.group](https://developer.mozilla.org/en-US/docs/Web/API/Console.group)\n * @static\n */\n group: function (...args) {\n return log('group', ...args);\n },\n\n /**\n * See [console.groupEnd](https://developer.mozilla.org/en-US/docs/Web/API/Console.groupEnd)\n * @static\n */\n groupEnd: function (...args) {\n return log('groupEnd', ...args);\n },\n\n /**\n * See [console.assert](https://developer.mozilla.org/en-US/docs/Web/API/Console.assert)\n * @static\n */\n assert: function (...args) {\n return log('assert', ...args);\n },\n\n /**\n * See [console.log](https://developer.mozilla.org/en-US/docs/Web/API/Console.log)\n * @static\n */\n log: function (...args) {\n return log('log', ...args);\n },\n\n /**\n * See [console.info](https://developer.mozilla.org/en-US/docs/Web/API/Console.info)\n * @static\n */\n info: function (...args) {\n return log('info', ...args);\n },\n\n /**\n * See [console.warn](https://developer.mozilla.org/en-US/docs/Web/API/Console.warn)\n * @static\n */\n warn: function (...args) {\n return log('warn', ...args);\n },\n\n /**\n * See [console.error](https://developer.mozilla.org/en-US/docs/Web/API/Console.error)\n * @static\n */\n error: function (...args) {\n return log('error', ...args);\n }\n};\n\nexport { Logger as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport Model from '../models/Model.js';\n\n/**\n * @class SettingsModel\n * @extends {Okta.Model}\n * @private\n */\nconst props = {\n local: function () {\n const settings = window.okta && window.okta.settings || {};\n const theme = window.okta && window.okta.theme || '';\n return {\n orgId: ['string', false, settings.orgId],\n orgName: ['string', false, settings.orgName],\n serverStatus: ['string', false, settings.serverStatus],\n persona: ['string', false, settings.persona],\n isDeveloperConsole: ['boolean', false, settings.isDeveloperConsole],\n isPreview: ['boolean', false, settings.isPreview],\n permissions: ['array', true, settings.permissions || []],\n theme: ['string', false, theme]\n };\n },\n constructor: function () {\n Model.apply(this, arguments);\n this.features = window._features || [];\n },\n\n /**\n * Checks if the user have a feature flag enabled (Based of the org level feature flag)\n * @param {String} feature Feature name\n * @return {Boolean}\n */\n hasFeature: function (feature) {\n return oktaUnderscore.contains(this.features, feature);\n },\n\n /**\n * Checks if any of the given feature flags are enabled (Based of the org level feature flags)\n * @param {Array} featureArray Features names\n * @return {Boolean} true if any of the give features are enabled. False otherwise\n */\n hasAnyFeature: function (featureArray) {\n return oktaUnderscore.some(featureArray, this.hasFeature, this);\n },\n\n /**\n * Checks if the user have a specific permission (based on data passed from JSP)\n * @param {String} permission Permission name\n * @return {Boolean}\n */\n hasPermission: function (permission) {\n return oktaUnderscore.contains(this.get('permissions'), permission);\n },\n\n /**\n * Checks if the org has ds theme set\n * @return {Boolean}\n */\n isDsTheme: function () {\n return this.get('theme') === 'dstheme';\n }\n};\nvar SettingsModel = Model.extend(props);\n\nexport { SettingsModel as default };\n","import oktaUnderscore from '../util/underscore-wrapper.js';\nimport Backbone from '../vendor/lib/backbone.js';\n\nvar CHILDREN = '__children__';\nvar RENDERED = '__rendered__';\nvar PARENT = '__parent__';\nvar CHILD_DEFINITIONS = '__children_definitions__';\nvar ADD_TO_CONTAINER = '__add_to_container__';\n\nfunction getIndex(container, view) {\n for (var i = 0; i < container[CHILDREN].length; i++) {\n if (view.cid === container[CHILDREN][i].cid) {\n return i;\n }\n }\n}\n\nfunction noop() {}\n\nfunction doRender(view) {\n view[RENDERED] = true;\n var html = view.renderTemplate(view.template);\n\n if (html) {\n view.$el.html(html);\n } else if (view.length) {\n view.$el.empty();\n }\n\n view.each(function (view) {\n view[ADD_TO_CONTAINER]();\n });\n}\n\nfunction subscribeEvents(view) {\n var isEventPropertyRe = /^(?!(?:delegate|undelegate|_))([a-zA-Z0-9]+)(?:Events)$/;\n\n oktaUnderscore.each(oktaUnderscore.allKeys(view), function (key) {\n var matchKeys = key.match(isEventPropertyRe);\n\n if (!matchKeys) {\n return;\n }\n\n var bindings = oktaUnderscore.result(view, key);\n\n var entity = view.options[matchKeys[1]] || view[matchKeys[1]];\n\n if (!entity || !oktaUnderscore.isObject(bindings) || !oktaUnderscore.isFunction(entity.trigger)) {\n return;\n }\n\n oktaUnderscore.each(bindings, function (callback, event) {\n var callbacks = oktaUnderscore.isFunction(callback) ? [callback] : oktaUnderscore.reduce(callback.split(/\\s+/), (arr, name) => {\n if (oktaUnderscore.isFunction(view[name])) {\n arr.push(view[name]);\n }\n\n return arr;\n }, []);\n\n oktaUnderscore.each(callbacks, function (cb) {\n view.listenTo(entity, event, cb);\n });\n });\n });\n}\n/**\n * A View operates on a string template, an token based template, or a model based template, with a few added hooks.\n * It provides a collection of child views, when a child view could be a View or another View.\n * Conceptually, if we were in a file system, the View is a folder, when the concrete child views are files,\n * and the child Views are sub folders.\n *\n * *Technically, when using a View as a container, it could have its own concrete logic,\n * but conceptually we like to keep it separated so a view is either a concrete view or a collection of child views.*\n *\n * In addition to the standard backbone options, we added `settings` and `state` as first class options.\n * it will automatically assign `options` to `this.options` as an instance member.\n *\n * See [Backbone.View](http://backbonejs.org/#View).\n *\n * @class src/framework/View\n * @extends external:Backbone.View\n * @param {Object} [options] options hash\n * @example\n * var DocumentView = Archer.View.extend({\n * template: [\n * '
',\n * '
',\n * '
'\n * ].join(''),\n * children: [[HeaderView, 'header'], [ContentView, 'article'], [FooterView, 'footer']]\n * });\n */\n\n\nlet View;\nconst proto = {\n /**\n * An object listing events and callback bind to this.{entity}\n * @name *Events\n * @memberof src/framework/View\n * @type {(Object|Function)}\n * @instance\n * @example\n * var FooView = View.extend({\n * modelEvents: {\n * 'change:name': 'render'\n * }\n * })\n * //equivalent to ==>\n * var FooView = View.extend({\n * initialize: function() {\n * this.listenTo(this.model, 'change:name', this.render);\n * }\n * });\n *\n *\n * //Multiple callbacks:\n * var FooView = View.extend({\n * modelEvents: {\n * 'change:name': 'render foo'\n * },\n * foo: function() {}\n * });\n *\n * //Callbacks As Function:\n * var FooView = View.extend({\n * stateEvents: {\n * 'change': function() {\n * }\n * });\n *\n * //Event Configuration As Function\n * var FooView = View.extend({\n * collectionEvents: function() {\n * var events = { 'change:name deleteItem': 'render' };\n * events['changeItem'] = 'spin';\n * events['addItem'] = function() {};\n * return events;\n * }\n * });\n */\n preinitialize: function (options) {\n /* eslint max-statements: [2, 17] */\n this.options = options || {};\n\n oktaUnderscore.extend(this, oktaUnderscore.pick(this.options, 'state', 'settings')); // init per-instance children collection\n\n\n this[CHILDREN] = [];\n this[RENDERED] = false;\n this[PARENT] = null;\n this[CHILD_DEFINITIONS] = this.children; // we want to make sure initialize is triggered *after* we append the views from the `this.views` array\n // FIXME:\n // It's actually can be done by override initialize method\n // initialize() { run extra login; super.initialize(); }\n // BUT the problem is child classes would override initialize without invoke super.\n // hence we have to also looking into (refactoring) ALL child classes.\n\n this.__original_initialize__ = this.initialize;\n this.initialize = noop;\n },\n constructor: function (options, ...rest) {\n Backbone.View.call(this, options);\n\n oktaUnderscore.each(oktaUnderscore.result(this, CHILD_DEFINITIONS), function (childDefinition) {\n this.add.apply(this, oktaUnderscore.isArray(childDefinition) ? childDefinition : [childDefinition]);\n }, this);\n\n delete this[CHILD_DEFINITIONS];\n\n const autoRender = oktaUnderscore.result(this, 'autoRender');\n\n if (autoRender && this.model) {\n var event = oktaUnderscore.isArray(autoRender) ? oktaUnderscore.map(autoRender, function (field) {\n return 'change:' + field;\n }).join(' ') : 'change';\n this.listenTo(this.model, event, function () {\n this.render();\n });\n }\n\n this.initialize = this.__original_initialize__;\n this.initialize.call(this, options, ...rest); // initialize in child class may have any number of parameters\n\n subscribeEvents(this);\n },\n\n /**\n * Unregister view from container\n * Note: this will not remove the view from the dom\n * and will not call the `remove` method on the view\n *\n * @param {src/framework/View} view the view to unregister\n * @private\n */\n unregister: function (view) {\n this.stopListening(view);\n var viewIndex = getIndex(this, view); // viewIndex is undefined when the view is not found (may have been removed)\n // check if it is undefined to prevent unexpected thing to happen\n // array.splice(undefined, x) removes the first x element(s) from the array\n // this protects us against issues when calling `remove` on a child view multiple times\n\n if (oktaUnderscore.isNumber(viewIndex)) {\n this[CHILDREN].splice(viewIndex, 1);\n }\n },\n\n /**\n * Should we auto render the view upon model change. Boolean or array of field names to listen to.\n * @type {Boolean|Array}\n * @deprecated Instead, please use modelEvents\n * @example\n * modelEvents: {\n * change:name: 'render'\n * }\n */\n autoRender: false,\n\n /**\n *\n * When the template is an underscore template, the render method will pass the options has to the template\n * And the associated model, if exists, when it will prefer the model over the options in case of a conflict.\n * {@link #render View.render}\n * @type {(String|Function)}\n * @example\n * var View = View.extend({\n * template: '

{{name}}

'\n * };\n */\n template: null,\n\n /**\n * A list of child view definitions to be passed to {@link #add this.add()}.\n * Note: these definitions will be added **before** the {@link #constructor initiliaze} method invokes.\n * @type {(Array|Function)}\n * @example\n * var Container = View.extend({\n * template: '

',\n * children: [\n * [ContentView, '.content'],\n * [OtherContentView, '.content'],\n * OtherView\n * ]\n * })\n *\n * var Container = View.extend({\n * template: '',\n * children: function () {\n * return [\n * [FormView, '.form-wrap', {options: {model: this.optiosn.otherModel}}]\n * ]\n * }\n * })\n */\n children: [],\n\n /**\n * Add a child view to the container.\n * If the container is already rendered, will also render the view and append it to the DOM.\n * Otherwise will render and append once the container is rendered.\n *\n * *We believe that for the sake of encapsulation, a view should control its own chilren, so we treat this method as\n * protected and even though technically you can call `view.add` externally we strongly discourage it.*\n *\n * @param {(src/framework/View|String)} view A class (or an instance which is discouraged) of a View - or an HTML\n * string/template\n * @param {String} [selector] selector in the view's template on which the view will be added to\n * @param {Object} [options]\n * @param {Boolean} [options.bubble=false] Bubble (proxy) events from this view up the chain\n * @param {Boolean} [options.prepend=false] Prepend the view instend of appending\n * @param {String} [options.selector] Selector in the view's template on which the view will be added to\n * @param {Object} [options.options] Extra options to pass to the child constructor\n * @protected\n * @returns {src/framework/View} - The instance of itself for the sake of chaining\n * @example\n * var Container = View.extend({\n *\n * template: [\n * '

',\n * '
',\n * ].join(''),\n *\n * initalize: function () {\n *\n * this.add(TitleView, 'h1'); // will be added to

\n *\n * this.add(ContentView1, 'section'); // will be added to
\n *\n * this.add(ContentView2, 'section', {prepend: true}); // will be add into
**before** ContentView1\n *\n * this.add(OtherView, {\n * options: {\n * model: new Model()\n * }\n * }); // will be added **after** the
element\n *\n * this.add('

some html

'); //=> \"

some html

\"\n * this.add('

{{name}}

'); //=> \"

John Doe

\"\n * this.add('{{name}}') //=> \"
John Doe
\"\n * this.add('{{name}} w00t') //=> \"
John Doe w00t
\"\n * }\n *\n * });\n *\n * var container - new View({name: 'John Doe'});\n */\n add: function (view, selector, bubble, prepend, extraOptions) {\n /* eslint max-statements: [2, 30], complexity: [2, 12] */\n var options = {};\n\n var args = oktaUnderscore.toArray(arguments); // This will throw if a compiled template function is passed accidentally\n\n\n if (oktaUnderscore.isFunction(view) && (!view.prototype || !view.prototype.render)) {\n throw new Error('Type passed to add() is not a View');\n }\n\n if (oktaUnderscore.isObject(selector)) {\n options = selector;\n selector = options.selector;\n bubble = options.bubble;\n prepend = options.prepend;\n extraOptions = options.options;\n } else if (oktaUnderscore.isObject(bubble)) {\n options = bubble;\n bubble = options.bubble;\n prepend = options.prepend;\n extraOptions = options.options;\n } // TODO: This will be deprecated at some point. Views should use precompiled templates\n\n\n if (oktaUnderscore.isString(view)) {\n view = function (template) {\n return View.extend({\n constructor: function () {\n try {\n var $el = Backbone.$(template);\n\n if ($el.length !== 1) {\n throw new Error('invalid Element');\n }\n\n var unescapingRexExp = /&(\\w+|#x\\d+);/g;\n var elementUnescapedOuterHTMLLength = $el.prop('outerHTML').replace(unescapingRexExp, ' ').length;\n var templateUnescapedLength = template.replace(unescapingRexExp, ' ').length;\n\n if (elementUnescapedOuterHTMLLength !== templateUnescapedLength) {\n throw new Error('invalid Element');\n }\n\n this.template = $el.html(); // Template string will be compiled by handlebars\n\n this.el = $el.empty()[0];\n } catch (e) {\n // not a valid html tag.\n this.template = template;\n }\n\n View.apply(this, arguments);\n }\n });\n }(view);\n }\n\n if (view.prototype && view.prototype instanceof View) {\n /* eslint new-cap: 0 */\n var viewOptions = oktaUnderscore.omit(oktaUnderscore.extend({}, this.options, extraOptions), 'el');\n\n args[0] = new view(viewOptions);\n return this.add.apply(this, args);\n } // prevent dups\n\n\n if (oktaUnderscore.isNumber(getIndex(this, view))) {\n throw new Error('Duplicate child');\n }\n\n view[PARENT] = this; // make the view responsible for adding itself to the parent:\n // * register the selector in the closure\n // * register a reference the parent in the closure\n\n view[ADD_TO_CONTAINER] = function (selector) {\n return function () {\n if (selector && view[PARENT].$(selector).length !== 1) {\n throw new Error('Invalid selector: ' + selector);\n }\n\n var $el = selector ? this[PARENT].$(selector) : this[PARENT].$el;\n this.render(); // we need to delegate events in case\n // the view was added and removed before\n\n this.delegateEvents(); // this[PARENT].at(index).$el.before(this.el);\n\n prepend ? $el.prepend(this.el) : $el.append(this.el);\n };\n }.call(view, selector); // if flag to bubble events is set\n // proxy all child view events\n\n\n if (bubble) {\n this.listenTo(view, 'all', function () {\n this.trigger.apply(this, arguments);\n });\n } // add to the dom if `render` has been called\n\n\n if (this.rendered()) {\n view[ADD_TO_CONTAINER]();\n } // add view to child views collection\n\n\n this[CHILDREN].push(view);\n return this;\n },\n\n /**\n * Remove all children from container\n */\n removeChildren: function () {\n this.each(function (view) {\n view.remove();\n });\n return this;\n },\n\n /**\n * Removes a view from the DOM, and calls stopListening to remove any bound events that the view has listenTo'd.\n * Also removes all childern of the view if any, and removes itself from its parent view(s)\n */\n remove: function () {\n this.removeChildren();\n\n if (this[PARENT]) {\n this[PARENT].unregister(this);\n }\n\n return Backbone.View.prototype.remove.apply(this, arguments);\n },\n\n /**\n * Compile the template to function you can apply tokens on on render time.\n * Uses the underscore tempalting engine by default\n * @protected\n * @param {String} template\n * @return {Function} a compiled template\n */\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n compileTemplate: function (template) {\n /* eslint @okta/okta-ui/no-specific-methods: 0*/\n return oktaUnderscore.template(template, undefined);\n },\n\n /**\n * Render a template with `this.model` and `this.options` as parameters\n * preferring the model over the options.\n *\n * @param {(String|Function)} template The template to build\n * @return {String} An HTML string\n * @protected\n */\n renderTemplate: function (template) {\n if (oktaUnderscore.isString(template)) {\n // TODO: This will be deprecated at some point. Views should use precompiled templates\n template = this.compileTemplate(template);\n }\n\n if (oktaUnderscore.isFunction(template)) {\n return template(this.getTemplateData());\n }\n },\n\n /**\n * The data hash passed to the compiled template\n * @return {Object}\n * @protected\n */\n getTemplateData: function () {\n var modelData = this.model && this.model.toJSON({\n verbose: true\n }) || {};\n\n var options = oktaUnderscore.omit(this.options, ['state', 'settings', 'model', 'collection']);\n\n return oktaUnderscore.defaults({}, modelData, options);\n },\n\n /**\n * Renders the template to `$el` and append all children in order\n * {@link #template View.template}\n */\n render: function () {\n this.preRender();\n doRender(this);\n this.postRender();\n return this;\n },\n\n /**\n * Pre render routine. Will be called right *before* the logic in {@link #render} is executed\n * @method\n */\n preRender: noop,\n\n /**\n * Post render routine. Will be called right *after* the logic in {@link #render} is executed\n * @method\n */\n postRender: noop,\n\n /**\n * Was this instance rendered\n */\n rendered: function () {\n return this[RENDERED];\n },\n\n /**\n * Get all direct child views.\n * @returns {src/framework/View[]}\n * @example\n * var container = View.extend({\n * children: [View1, View2]\n * }).render();\n * container.getChildren() //=> [view1, view2];\n */\n getChildren: function () {\n return this.toArray();\n },\n\n /**\n * Get a child by index\n * @param {number} index\n * @returns {src/framework/View} The child view\n */\n at: function (index) {\n return this.getChildren()[index];\n },\n\n /**\n * Invokes a method on all children down the tree\n *\n * @param {String} method The method to invoke\n */\n invoke: function (methodName) {\n var args = oktaUnderscore.toArray(arguments);\n\n this.each(function (child) {\n // if child has children, bubble down the tree\n if (child.size()) {\n child.invoke.apply(child, args);\n } // run the function on the child\n\n\n if (oktaUnderscore.isFunction(child[methodName])) {\n child[methodName].apply(child, args.slice(1));\n }\n });\n return this;\n }\n};\nView = Backbone.View.extend(\n/** @lends src/framework/View.prototype */\nproto); // Code borrowed from Backbone.js source\n// Underscore methods that we want to implement on the Container.\n\nvar methods = ['each', 'map', 'reduce', 'reduceRight', 'find', 'filter', 'reject', 'every', 'some', 'contains', 'toArray', 'size', 'first', 'initial', 'rest', 'last', 'without', 'indexOf', 'shuffle', 'lastIndexOf', 'isEmpty', 'chain', 'where', 'findWhere'];\n\noktaUnderscore.each(methods, function (method) {\n View.prototype[method] = function () {\n var args = oktaUnderscore.toArray(arguments);\n\n args.unshift(oktaUnderscore.toArray(this[CHILDREN]));\n return oktaUnderscore[method].apply(oktaUnderscore, args);\n };\n});\n/**\n * See [_.each](http://underscorejs.org/#each)\n * @name each\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Object} [context]\n */\n\n/**\n * See [_.map](http://underscorejs.org/#map)\n * @name map\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Object} [context]\n */\n\n/**\n * See [_.reduce](http://underscorejs.org/#reduce)\n * @name reduce\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Mixed} memo\n * @param {Object} [context]\n */\n\n/**\n * See [_.reduceRight](http://underscorejs.org/#reduceRight)\n * @name reduceRight\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} iterator\n * @param {Mixed} memo\n * @param {Object} [context]\n */\n\n/**\n * See [_.find](http://underscorejs.org/#find)\n * @name find\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n\n/**\n * See [_.filter](http://underscorejs.org/#filter)\n * @name filter\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n\n/**\n * See [_.reject](http://underscorejs.org/#reject)\n * @name reject\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} predicate\n * @param {Object} [context]\n */\n\n/**\n * See [_.every](http://underscorejs.org/#every)\n * @name every\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} [predicate]\n * @param {Object} [context]\n */\n\n/**\n * See [_.some](http://underscorejs.org/#some)\n * @name some\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Function} [predicate]\n * @param {Object} [context]\n */\n\n/**\n * See [_.contains](http://underscorejs.org/#contains)\n * @name contains\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n */\n\n/**\n * See [_.toArray](http://underscorejs.org/#toArray)\n * @name toArray\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.size](http://underscorejs.org/#size)\n * @name size\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.first](http://underscorejs.org/#first)\n * @name first\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n\n/**\n * See [_.initial](http://underscorejs.org/#initial)\n * @name initial\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n\n/**\n * See [_.last](http://underscorejs.org/#last)\n * @name last\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [n]\n */\n\n/**\n * See [_.rest](http://underscorejs.org/#rest)\n * @name rest\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Number} [index]\n */\n\n/**\n * See [_.without](http://underscorejs.org/#without)\n * @name without\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.indexOf](http://underscorejs.org/#indexOf)\n * @name indexOf\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n * @param {Boolean} [isSorted]\n */\n\n/**\n * See [_.shuffle](http://underscorejs.org/#shuffle)\n * @name shuffle\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.shuffle](http://underscorejs.org/#lastIndexOf)\n * @name lastIndexOf\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Mixed} value\n * @param {Number} [fromIndex]\n */\n\n/**\n * See [_.isEmpty](http://underscorejs.org/#isEmpty)\n * @name isEmpty\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.chain](http://underscorejs.org/#chain)\n * @name chain\n * @memberof src/framework/View\n * @method\n * @instance\n */\n\n/**\n * See [_.where](http://underscorejs.org/#where)\n * @name where\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Object} properties\n */\n\n/**\n * See [_.findWhere](http://underscorejs.org/#findWhere)\n * @name findWhere\n * @memberof src/framework/View\n * @method\n * @instance\n * @param {Object} properties\n */\n\n/**\n * It's used for distinguishing the ambiguity from _.isFunction()\n * which returns True for both a JavaScript Class constructor function\n * and normal function. With this flag, we can tell a function is actually\n * a View Class.\n * This flag is added in order to support the type of a parameter can be\n * either a Class or pure function that returns a Class.\n */\n\n\nView.isCourageView = true;\nvar FrameworkView = View;\n\nexport { FrameworkView as default };\n","import _Handlebars2 from '../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from './underscore-wrapper.js';\n\n/* eslint @okta/okta-ui/no-specific-methods: 0 */\n/**\n * @class module:Okta.internal.util.TemplateUtil\n * @hideconstructor\n */\n\nvar TemplateUtil = /** @lends module:Okta.internal.util.TemplateUtil */\n{\n /**\n * Compiles a Handlebars template\n * @static\n * @method\n */\n // TODO: This will be deprecated at some point. Views should use pre-compiled templates\n tpl: oktaUnderscore.memoize(function (tpl) {\n /* eslint @okta/okta-ui/no-specific-methods: 0 */\n return function (context) {\n return _Handlebars2.compile(tpl)(context);\n };\n })\n};\n\nexport { TemplateUtil as default };\n","import Backbone from '../vendor/lib/backbone.js';\nimport oktaUnderscore from '../util/underscore-wrapper.js';\nimport FrameworkView from '../framework/View.js';\nimport TemplateUtil from '../util/TemplateUtil.js';\n\nconst eventBus = oktaUnderscore.clone(Backbone.Events); // add `broadcast` and `listen` functionality to all views\n// We use one event emitter per all views\n// This means we need to be very careful with event names\n\n\nconst proto = {\n constructor: function (options, ...rest) {\n FrameworkView.call(this, options, ...rest);\n this.module && this.$el.attr('data-view', this.module.id);\n },\n\n /**\n * @deprecated Use {@link #removeChildren}\n */\n empty: function () {\n return this.removeChildren();\n },\n compileTemplate: TemplateUtil.tpl,\n\n /**\n *\n * Broadcasts a global event that all views and controllers can subscribe to\n * for framework use only - prefer using a shared model\n *\n * @param {String} eventName A unique identifier for the event\n * @param {...String} param Parameter to pass with the event (can pass more than one parameter)\n * @deprecated For internal use only\n * @private\n */\n broadcast: function () {\n eventBus.trigger.apply(eventBus, arguments);\n return this;\n },\n\n /**\n * Subscribe to broadcast events\n * for framework use only - prefer using a shared model\n *\n * @param {String} eventName The event identifier to subscribe\n * @param {Function} fn The callback function to invoke\n * @deprecated For internal use only\n * @private\n */\n listen: function (name, fn) {\n eventBus.off(name, fn);\n this.listenTo(eventBus, name, fn);\n return this;\n },\n\n /**\n * Shows a notification box\n * @param {String} level success / warning / error\n * @param {String} message The message to display\n * @param {Object} [options]\n * @param {Number} [options.width] Set a custom width\n * @param {String} [options.title] Set a custom title\n * @param {Boolean} [options.hide=true] Do we want to auto-hide this notification?\n * @param {Boolean} [options.dismissable] Show a dismiss button\n * @example\n * view.notify('success', 'Group created successfully');\n */\n notify: function (level, message, options) {\n this.broadcast('notification', oktaUnderscore.defaults({\n message: message,\n level: level\n }, options));\n return this;\n },\n\n /**\n * Shows a confirmation dialog\n *\n * Uses https://www.ericmmartin.com/projects/simplemodal/.\n * If you want to configure the simplemodal options use ConfirmationDialog instead.\n *\n * The main difference between this and the native javascript `confirm` method\n * Is this method is non blocking (note the callback pattern).\n *\n * The callback function will run in the context (`this`) of the invoking view.\n *\n * @param {String} [title] The title of the confirmation dialog\n * @param {String} [message] The message of the confirmation dialog\n * @param {Function} [okfn] The callback to run when the user hits \"OK\" (runs in the context of the invoking view)\n * @param {Function} [cancelfn] The callback to run when the user hits \"Cancel\"\n * (runs in the context of the invoking view)\n * @example\n * view.confirm('Delete Group', 'Are you sure you want to delete the selected group?', function () {\n * model.destroy();\n * });\n *\n * // title will be auto-set to \"Okta\"\n * view.confirm('Are you sure you want to delete the selected group?', function () {\n * model.destroy();\n * });\n *\n * view.confirm({\n * title: 'Delete Group', //=> Modal title\n * subtitle: 'Are you sure you want to delete the selected group?', //=> Modal subtitle\n * content: '

THIS WILL DELETE THE GROUP!

', //=> A template or a view to add to the modal\n * save: 'Delete Group', //=> Button label\n * ok: _.bind(model.save, model) // Callback function on hitting \"ok\" button\n * cancel: 'Cancel', //=> Button label\n * cancelFn: _.bind(model.destroy, model) // Callback function on hitting \"cancel\" button\n * });\n */\n confirm: function (title, message, okfn, cancelfn) {\n let options;\n /* eslint max-statements: [2, 12] */\n\n if (typeof title === 'object') {\n options = title;\n } else {\n // eslint-disable-next-line no-lonely-if\n if (arguments.length === 2 && oktaUnderscore.isFunction(message)) {\n options = {\n title: 'Okta',\n // eslint-disable-line @okta/okta/no-unlocalized-text\n subtitle: title,\n ok: message\n };\n } else {\n options = {\n title: title,\n subtitle: message,\n ok: okfn,\n cancelFn: cancelfn\n };\n }\n }\n\n if (oktaUnderscore.isFunction(options.ok)) {\n options.ok = oktaUnderscore.bind(options.ok, this);\n }\n\n if (oktaUnderscore.isFunction(options.cancelFn)) {\n options.cancelFn = oktaUnderscore.bind(options.cancelFn, this);\n }\n\n this.broadcast('confirmation', options);\n return this;\n },\n\n /**\n * Shows an alert box\n *\n * The main difference between this and the native javascript `alert` method\n * Is this method is non blocking.\n *\n * @param {String} message The message\n * @example\n * view.alert('Mission complete');\n */\n alert: function (params) {\n if (oktaUnderscore.isString(params)) {\n params = {\n subtitle: params\n };\n }\n\n this.confirm(oktaUnderscore.extend({}, params, {\n noCancelButton: true\n }));\n return this;\n }\n};\n/**\n * See {@link src/framework/View} for more detail and examples from the base class.\n * @class module:Okta.View\n * @extends src/framework/View\n */\n\n/** @lends module:Okta.View.prototype */\n\nvar BaseView = FrameworkView.extend(proto,\n/** @lends View.prototype */\n{\n /** @method */\n decorate: function (TargetView) {\n const BaseViewView = TargetView.extend({});\n\n oktaUnderscore.defaults(BaseViewView.prototype, proto);\n\n return BaseViewView;\n }\n});\n\nexport { BaseView as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport BaseView from '../BaseView.js';\nimport StringUtil from '../../util/StringUtil.js';\n\nconst defaults = {\n level: 'success',\n hide: true,\n fade: 400,\n delay: 3000,\n width: 0,\n dismissable: false\n};\nvar Notification = BaseView.extend({\n className: 'infobox infobox-confirm infobox-confirm-fixed',\n events: {\n 'click .infobox-dismiss-link': function (e) {\n e.preventDefault();\n this.fadeOut();\n }\n },\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 220\n },\n \"end\": {\n \"line\": 1,\n \"column\": 229\n }\n }\n }) : helper)) + \"

\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"dismissable\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 164\n }\n }\n })) != null ? stack1 : \"\") + \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 203\n },\n \"end\": {\n \"line\": 1,\n \"column\": 241\n }\n }\n })) != null ? stack1 : \"\") + \"

\" + alias4((helper = (helper = lookupProperty(helpers, \"message\") || (depth0 != null ? lookupProperty(depth0, \"message\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"message\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 244\n },\n \"end\": {\n \"line\": 1,\n \"column\": 255\n }\n }\n }) : helper)) + \"

\";\n },\n \"useData\": true\n }),\n initialize: function () {\n this.options = oktaUnderscore.defaults({}, this.options, defaults);\n\n if (!this.options.message) {\n switch (this.options.level) {\n case 'success':\n this.options.message = StringUtil.localize('notification.default.message.success', 'courage');\n break;\n\n case 'error':\n this.options.message = StringUtil.localize('notification.default.message.error', 'courage');\n break;\n\n case 'warning':\n this.options.message = StringUtil.localize('notification.default.message.warning', 'courage');\n break;\n }\n }\n\n this.$el.addClass('infobox-' + this.options.level);\n\n if (this.options.width) {\n this.$el.width(this.options.width);\n }\n },\n getTemplateData: function () {\n return oktaUnderscore.extend(oktaUnderscore.pick(this.options, 'level', 'message', 'title'), {\n dismissable: this.options.hide === false || this.options.dismissable === true\n });\n },\n postRender: function () {\n if (this.options.hide) {\n oktaUnderscore.delay(oktaUnderscore.bind(this.fadeOut, this), this.options.delay);\n }\n },\n fadeOut: function () {\n this.$el.fadeOut(this.options.fade, oktaUnderscore.bind(this.remove, this));\n }\n});\n\nexport { Notification as default };\n","import Backbone from '../vendor/lib/backbone.js';\nimport ConfirmationDialog from '../../empty.js';\nimport oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport Logger from './Logger.js';\nimport SettingsModel from './SettingsModel.js';\nimport Notification from '../views/components/Notification.js';\n\nfunction getRoute(router, route) {\n const root = oktaUnderscore.result(router, 'root') || '';\n\n if (root && oktaUnderscore.isString(route)) {\n return [root, route].join('/').replace(/\\/{2,}/g, '/');\n }\n\n return route;\n}\n/**\n * BaseRouter is a standard [Backbone.Router](http://backbonejs.org/#Router)\n * with a few additions:\n * - Explicit mapping between routes and controllers\n * - Support for rendering notification and confirmation dialogs\n *\n * Checkout the [Hello World Tutorial](https://github.com/okta/courage/wiki/Hello-World)\n * for a step-by-step guide to using this.\n *\n * @class module:Okta.Router\n * @extends external:Backbone.Router\n * @param {Object} options options hash\n * @param {String} options.el a jQuery selector string stating where to attach the controller in the DOM\n */\n\n\nconst props =\n/** @lends module:Okta.Router.prototype */\n{\n /**\n * The root URL for the router. When setting {@link http://backbonejs.org/#Router-routes|routes},\n * it will be prepended to each route.\n * @type {String|Function}\n */\n root: '',\n listen: Notification.prototype.listen,\n constructor: function (options = {}) {\n this.el = options.el;\n /**\n * Make sure `this.settings` has been set before invoke super - `Backbone.Router.apply`,\n * which will invoke `this.initialize`, which could use `this.settings`.\n *\n * In theory we can set `this.settings` in `this.initialize` and assume `child.initialize`\n * will invoke `super.initialize` first. But in reality, `child.initialize` doesn't call\n * `super.initialize` at all.\n */\n\n this.settings = new SettingsModel(oktaUnderscore.omit(options, 'el'));\n\n if (options.root) {\n this.root = options.root;\n }\n\n Backbone.Router.apply(this, arguments);\n this.listen('notification', this._notify);\n this.listen('confirmation', this._confirm);\n },\n\n /**\n * Fires up a confirmation dialog\n *\n * @param {Object} options Options Hash\n * @param {String} options.title The title\n * @param {Array} buttonOrder The order of the buttons\n * @param {String} options.subtitle The explain text\n * @param {String} options.save The text for the save button\n * @param {Function} options.ok The callback function to run when hitting \"OK\"\n * @param {String} options.cancel The text for the cancel button\n * @param {Function} options.cancelFn The callback function to run when hitting \"Cancel\"\n * @param {Boolean} options.noCancelButton Don't render the cancel button (useful for alert dialogs)\n * @param {Boolean} options.noSubmitButton Don't render the primary button (useful for alert dialogs)\n * @private\n *\n * @return {Okta.View} the dialog view\n */\n _confirm: function (options = {}) {\n const Dialog = ConfirmationDialog.extend(oktaUnderscore.pick(options, 'title', 'subtitle', 'save', 'ok', 'cancel', 'cancelFn', 'noCancelButton', 'noSubmitButton', 'content', 'danger', 'type', 'closeOnOverlayClick', 'buttonOrder'));\n const dialog = new Dialog({\n model: this.settings\n }); // The model is here because itsa part of the BaseForm paradigm.\n // It will be ignored in the context of a confirmation dialog.\n\n dialog.render();\n return dialog; // test hook\n },\n\n /**\n * Fires up a notification banner\n *\n * @param {Object} options Options Hash\n * @return {Okta.View} the notification view\n * @private\n */\n _notify: function (options) {\n const notification = new Notification(options);\n oktaJQueryStatic('#content').prepend(notification.render().el);\n return notification; // test hook\n },\n\n /**\n * Renders a Controller\n * This will initialize new instance of a controller and call render on it\n *\n * @param {Okta.Controller} Controller The controller Class we which to render\n * @param {Object} [options] Extra options to the controller constructor\n */\n render: function (Controller, options) {\n this.unload();\n options = oktaUnderscore.extend(oktaUnderscore.pick(this, 'settings', 'el'), options || {});\n this.controller = new Controller(options);\n this.controller.render();\n },\n\n /**\n * Starts the backbone history object\n *\n * Waits for the dom to be ready before calling `Backbone.history.start()` (IE issue).\n *\n * See [Backbone History](http://backbonejs.org/#History) for more information.\n */\n start: function (...args) {\n oktaJQueryStatic(function () {\n if (Backbone.History.started) {\n Logger.error('History has already been started');\n return;\n }\n\n Backbone.history.start(...args);\n });\n },\n\n /**\n * Removes active controller and frees up event listeners\n */\n unload: function () {\n if (this.controller) {\n this.stopListening(this.controller);\n this.stopListening(this.controller.state);\n this.controller.remove();\n }\n },\n route: function (route, name, callback) {\n return Backbone.Router.prototype.route.call(this, getRoute(this, route), name, callback);\n },\n navigate: function (fragment, options) {\n return Backbone.Router.prototype.navigate.call(this, getRoute(this, fragment), options);\n }\n};\nvar BaseRouter = Backbone.Router.extend(props);\n\nexport { BaseRouter as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport Model from '../models/Model.js';\n\n/**\n * @class StateMachine\n * @extends Okta.Model\n * @private\n *\n * A state object that holds the applciation state\n */\nvar StateMachine = Model.extend({\n /**\n * Invokes a method on the applicable {@link Okta.Controller}\n *\n * ```javascript\n * state.invoke('methodName', 'param1', 'param2')\n * // Will call\n * contoller.methodName('param1', 'param2')\n * ```\n * @param {String} methodName the name of the controller method to invoke on the controller\n */\n invoke: function () {\n const args = oktaUnderscore.toArray(arguments);\n\n args.unshift('__invoke__');\n this.trigger.apply(this, args);\n }\n});\n\nexport { StateMachine as default };\n","import oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport BaseRouter from './BaseRouter.js';\nimport SettingsModel from './SettingsModel.js';\nimport StateMachine from './StateMachine.js';\nimport BaseView from '../views/BaseView.js';\n\nfunction clean(obj) {\n const res = {};\n\n oktaUnderscore.each(obj, function (value, key) {\n if (!oktaUnderscore.isNull(value)) {\n res[key] = value;\n }\n });\n\n return res;\n}\n\nconst proto =\n/** @lends module:Okta.Controller.prototype */\n{\n preinitialize: function (options = {}) {\n // If 'state' is passed down as options, use it, else create a 'new StateMachine()'\n this.state = oktaUnderscore.result(this, 'state');\n const hasStateBeenInitialized = this.state instanceof StateMachine || options.state instanceof StateMachine;\n\n if (!hasStateBeenInitialized) {\n const stateData = oktaUnderscore.defaults(clean(options.state), this.state || {}); // TODO:\n // `framework/View.js set `this.state = options.state.`.\n // Therefore we could consider to do\n // 1. `options.state = new StateMachine()`\n // 2. remove `delete options.state`\n\n\n this.state = new StateMachine(stateData);\n delete options.state;\n }\n\n if (!options.settings) {\n // allow the controller to live without a router\n options.settings = new SettingsModel(oktaUnderscore.omit(options || {}, 'el'));\n this.listen('notification', BaseRouter.prototype._notify);\n this.listen('confirmation', BaseRouter.prototype._confirm);\n }\n\n BaseView.prototype.preinitialize.call(this, options);\n },\n constructor: function (options = {}) {\n BaseView.call(this, options);\n this.listenTo(this.state, '__invoke__', function () {\n const args = oktaUnderscore.toArray(arguments);\n\n const method = args.shift();\n\n if (oktaUnderscore.isFunction(this[method])) {\n this[method].apply(this, args);\n }\n });\n let MainView; // if `this.View` is already a Backbone View\n\n if (this.View && this.View.isCourageView) {\n MainView = this.View;\n } // if `this.View` is a pure function that returns a Backbone View\n else if (oktaUnderscore.result(this, 'View') && oktaUnderscore.result(this, 'View').isCourageView) {\n MainView = oktaUnderscore.result(this, 'View');\n }\n\n if (MainView) {\n this.add(new MainView(this.toJSON()));\n }\n },\n\n /**\n * The default values of our application state\n * @type {Object}\n * @default {}\n */\n state: {},\n\n /**\n * The main view this controller operate on\n * @type {module:Okta.View}\n * @default null\n */\n View: null,\n\n /**\n * Renders the {@link module:Okta.Controller#View|main view} after the DOM is ready\n * in case the controller is the root component of the page (e.g there's no router)\n */\n render: function () {\n const args = arguments;\n const self = this;\n oktaJQueryStatic(function () {\n BaseView.prototype.render.apply(self, args);\n });\n return this;\n },\n\n /**\n * Creates the view constructor options\n * @param {Object} [options] Extra options\n * @return {Object} The view constructor options\n */\n toJSON: function (options) {\n return oktaUnderscore.extend(oktaUnderscore.pick(this, 'state', 'settings', 'collection', 'model'), options || {});\n },\n\n /**\n * Removes the child views, empty the DOM element and stop listening to events\n */\n remove: function () {\n this.removeChildren();\n this.stopListening();\n this.$el.empty();\n return this;\n }\n};\n/**\n * A Controller is our application control flow component.\n *\n * Typically it will:\n * - Initialize the models, controller and main views\n * - Listen to events\n * - Create, read, update and delete models\n * - Create modal dialogs, confirmation dialogs and alert dialogs\n * - Control the application flow\n *\n * The constructor is responsible for:\n * - Create the application state object\n * - Assign or creates the application settings object\n * - Create an instance of the main view with the relevant parameters\n *\n * See:\n * [Hello World Tutorial](https://github.com/okta/courage/wiki/Hello-World),\n * [Test Spec](https://github.com/okta/okta-ui/blob/master/packages/courage/test/spec/util/BaseController_spec.js)\n *\n * @class module:Okta.Controller\n * @param {Object} options Options Hash\n * @param {SettingsModel} [options.settings] Application Settings Model\n * @param {String} options.el a jQuery selector string stating where to attach the controller in the DOM\n */\n\nvar BaseController = BaseView.extend(proto);\n\nexport { BaseController as default };\n","import oktaUnderscore from './underscore-wrapper.js';\n\nfunction changeEventString(doWhen) {\n return 'change:' + oktaUnderscore.keys(doWhen).join(' change:');\n}\n\nfunction calcDoWhen(value, key) {\n const modelValue = this.model.get(key);\n\n if (oktaUnderscore.isFunction(value)) {\n return value.call(this, modelValue);\n } else {\n return value === modelValue;\n }\n}\n\nfunction _doWhen(view, doWhen, fn) {\n const toggle = oktaUnderscore.bind(fn, view, view, doWhen);\n\n view.render = oktaUnderscore.wrap(view.render, function (render) {\n const val = render.call(view);\n toggle({\n animate: false\n });\n return val;\n });\n view.listenTo(view.model, changeEventString(doWhen), function () {\n toggle({\n animate: true\n });\n });\n}\n\nvar ViewUtil = {\n applyDoWhen: function (view, doWhen, fn) {\n if (!(view.model && oktaUnderscore.isObject(doWhen) && oktaUnderscore.size(doWhen) && oktaUnderscore.isFunction(fn))) {\n return;\n }\n\n _doWhen(view, doWhen, function (view, doWhen, options) {\n const result = oktaUnderscore.every(oktaUnderscore.map(doWhen, calcDoWhen, view));\n\n fn.call(view, result, options);\n });\n }\n};\n\nexport { ViewUtil as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport ViewUtil from '../../util/ViewUtil.js';\nimport BaseView from '../BaseView.js';\n\nconst disabledEvents = {\n click: function (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n};\n/**\n * A configurable button\n * @class module:Okta.internal.views.components.BaseButtonLink\n * @extends module:Okta.View\n * @example\n * var View = BaseButtonLink.extend({\n * title: 'Click Me',\n * icon: 'help-text'\n * })\n */\n\nvar BaseButtonLink = BaseView.extend(\n/** @lends module:Okta.internal.views.components.BaseButtonLink.prototype */\n{\n attributes: function () {\n const defaultAttrs = {\n 'data-se': 'button'\n };\n\n const additionalAttr = this.__getAttribute('attrs');\n\n return oktaUnderscore.extend(defaultAttrs, additionalAttr);\n },\n\n /**\n * The main text for the button\n * @name title\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * The link for the button\n * @name href\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * CSS class for the icon to display. See [Style guide](http://rain.okta1.com:1802/su/dev/style-guide#icons)\n * @name icon\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {(String|Function)}\n * @instance\n */\n\n /**\n * A [Backbone events](http://backbonejs.org/#View-delegateEvents) hash\n * @name events\n * @memberof module:Okta.internal.views.components.BaseButtonLink\n * @type {Object}\n * @instance\n */\n tagName: 'a',\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 67\n },\n \"end\": {\n \"line\": 1,\n \"column\": 76\n }\n }\n }) : helper));\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"icon\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 54\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 54\n },\n \"end\": {\n \"line\": 1,\n \"column\": 83\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n }),\n\n /**\n * Make this button visible, default to true.\n * @type {(Boolean|Function)}\n * @default true\n */\n visible: true,\n\n /**\n * Make this button enabled, default to true.\n * @type {(Boolean|Function)}\n * @default true\n */\n enabled: true,\n\n /**\n * The setting to determine when the button is enabled, default to {} and\n * enabled takes a higher priority.\n * @type {(Object|Function)}\n * @default {}\n */\n enableWhen: {},\n\n /**\n * The setting to determine when the button is visible, default to {} and\n * visible takes a higher priority.\n * @type {(Object|Function)}\n * @default {}\n */\n showWhen: {},\n constructor: function (options) {\n this.options = options || {};\n const data = this.getTemplateData();\n this.disabled = false;\n BaseView.apply(this, arguments);\n this.$el.addClass('link-button');\n\n if (data.icon) {\n this.$el.addClass('link-button-icon');\n\n if (!data.title) {\n this.$el.addClass('icon-only');\n }\n }\n },\n getTemplateData: function () {\n return {\n href: this.__getAttribute('href'),\n title: this.__getAttribute('title'),\n icon: this.__getAttribute('icon')\n };\n },\n initialize: function () {\n ViewUtil.applyDoWhen(this, oktaUnderscore.resultCtx(this, 'enableWhen', this), this.toggle);\n ViewUtil.applyDoWhen(this, oktaUnderscore.resultCtx(this, 'showWhen', this), this.toggleVisible);\n },\n render: function () {\n BaseView.prototype.render.apply(this, arguments);\n\n if (!oktaUnderscore.result(this, 'enabled')) {\n this.toggle(false);\n }\n\n if (!oktaUnderscore.result(this, 'visible')) {\n this.toggleVisible(false);\n }\n\n const data = this.getTemplateData();\n this.$el.attr('href', data.href || '#');\n return this;\n },\n __getAttribute: function (name, defaultValue) {\n let value = oktaUnderscore.resultCtx(this.options, name, this);\n\n if (oktaUnderscore.isUndefined(value)) {\n value = oktaUnderscore.result(this, name);\n }\n\n return !oktaUnderscore.isUndefined(value) ? value : defaultValue;\n },\n enable: function () {\n this.toggle(true);\n },\n disable: function () {\n this.toggle(false);\n },\n show: function () {\n this.toggleVisible(true);\n },\n hide: function () {\n this.toggleVisible(false);\n },\n toggle: function (enable) {\n const bool = !!enable && oktaUnderscore.result(this, 'enabled'); //this is to toggle the enability\n\n\n this.disabled = !bool;\n this.$el.toggleClass('link-button-disabled btn-disabled disabled', this.disabled);\n this.delegateEvents(this.disabled ? disabledEvents : null);\n },\n toggleVisible: function (visible) {\n const hidden = !visible || !oktaUnderscore.result(this, 'visible');\n this.$el.toggleClass('hide', hidden);\n }\n});\n\nexport { BaseButtonLink as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport BaseButtonLink from '../views/components/BaseButtonLink.js';\n\n/* eslint '@okta/okta-ui/no-deprecated-methods': [0, [{ name: 'BaseButtonLink.extend', use: 'Okta.createButton'}, ]] */\n/**\n * A factory method wrapper for {@link BaseButtonLink} creation\n * @class module:Okta.internal.util.ButtonFactory\n */\n\nfunction normalizeEvents(options) {\n const events = oktaUnderscore.extend(options.click ? {\n click: options.click\n } : {}, options.events || {});\n\n const target = {};\n\n oktaUnderscore.each(events, function (fn, eventName) {\n target[eventName] = function (e) {\n if (!options.href) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (!(this.disabled && eventName === 'click')) {\n fn.apply(this, arguments);\n }\n };\n });\n\n return target;\n}\n\nvar ButtonFactory = /** @lends module:Okta.internal.util.ButtonFactory */\n{\n /**\n * Creates a {@link module:Okta.internal.views.components.BaseButtonLink|BaseButtonLink}.\n * @param {Object} options Options hash\n * @param {String} [options.title] The button text\n * @param {String} [options.icon]\n * CSS class for the icon to display. See [Style guide](http://rain.okta1.com:1802/su/dev/style-guide#icons)\n * @param {String} [options.href] The button link\n * @param {Function} [options.click] On click callback\n * @param {Object} [options.events] a [Backbone events](http://backbonejs.org/#View-delegateEvents) hash\n * @returns {module:Okta.internal.views.components.BaseButtonLink} BaseButtonLink prototype (\"class\")\n */\n create: function (options) {\n options = oktaUnderscore.clone(options);\n options.attrs = options.attributes;\n delete options.attributes;\n return BaseButtonLink.extend(oktaUnderscore.extend(options, {\n events: normalizeEvents(options)\n }));\n }\n};\n\nexport { ButtonFactory as default };\n","import Backbone from '../vendor/lib/backbone.js';\nimport oktaUnderscore from './underscore-wrapper.js';\n\nfunction Class(options) {\n this.options = oktaUnderscore.clone(options || {});\n this.cid = oktaUnderscore.uniqueId('class');\n this.initialize.apply(this, arguments);\n}\n\noktaUnderscore.extend(Class.prototype, Backbone.Events, {\n initialize: function () {}\n});\n\nClass.extend = Backbone.Model.extend;\n\nexport { Class as default };\n","var js_cookie = {exports: {}};\n\nexport { js_cookie as j };\n","import { j as js_cookie } from '../../../../_virtual/js.cookie.js';\n\n/*!\n * JavaScript Cookie v2.1.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n\n(function (module, exports) {\n(function (factory) {\n {\n module.exports = factory();\n }\n})(function () {\n function extend() {\n var i = 0;\n var result = {};\n\n for (; i < arguments.length; i++) {\n var attributes = arguments[i];\n\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n\n return result;\n }\n\n function init(converter) {\n function api(key, value, attributes) {\n var result; // Write\n\n if (arguments.length > 1) {\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n var expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n }\n\n try {\n result = JSON.stringify(value);\n\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n\n if (!converter.write) {\n value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n } else {\n value = converter.write(value, key);\n }\n\n key = encodeURIComponent(String(key));\n key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n key = key.replace(/[\\(\\)]/g, escape);\n return document.cookie = [key, '=', value, attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE\n attributes.path && '; path=' + attributes.path, attributes.domain && '; domain=' + attributes.domain, attributes.secure ? '; secure' : ''].join('');\n } // Read\n\n\n if (!key) {\n result = {};\n } // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling \"get()\"\n\n\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var rdecode = /(%[0-9A-Z]{2})+/g;\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var name = parts[0].replace(rdecode, decodeURIComponent);\n var cookie = parts.slice(1).join('=');\n\n if (cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent);\n\n if (this.json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n\n if (key === name) {\n result = cookie;\n break;\n }\n\n if (!key) {\n result[name] = cookie;\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n api.get = api.set = api;\n\n api.getJSON = function () {\n return api.apply({\n json: true\n }, [].slice.call(arguments));\n };\n\n api.defaults = {};\n\n api.remove = function (key, attributes) {\n api(key, '', extend(attributes, {\n expires: -1\n }));\n };\n\n api.withConverter = init;\n return api;\n }\n\n return init(function () {});\n});\n}(js_cookie));\n\nvar Cookie = js_cookie.exports;\n\nexport { Cookie as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport Cookie$1 from '../vendor/lib/js.cookie.js';\n\nconst SECURED_COOKIE = /^https/.test(window.location.href);\nvar Cookie = {\n setCookie: function (name, value, options) {\n Cookie$1.set(name, value, oktaUnderscore.defaults(options || {}, {\n secure: SECURED_COOKIE,\n path: '/'\n }));\n },\n getCookie: function () {\n return Cookie$1.get.apply(Cookie$1, arguments);\n },\n removeCookie: function () {\n return Cookie$1.remove.apply(Cookie$1, arguments);\n }\n};\n\nexport { Cookie as default };\n","import clipboard from 'clipboard';\nimport oktaJQueryStatic from './jquery-wrapper.js';\nimport oktaUnderscore from './underscore-wrapper.js';\nimport FrameworkView from '../framework/View.js';\nimport Class from './Class.js';\n\nconst Clipboard = clipboard;\nconst OPTIONS = ['success', 'error', 'target', 'text'];\nconst ClipboardClipboardWrapper = Class.extend({\n initialize: function (el, options) {\n /* eslint complexity:0, max-statements: [2, 24] */\n options = oktaUnderscore.pick(options || {}, OPTIONS);\n let trigger;\n let target;\n let text;\n\n if (oktaUnderscore.isString(el)) {\n trigger = el;\n }\n\n if (oktaUnderscore.isElement(el)) {\n trigger = el;\n }\n\n if (el instanceof oktaJQueryStatic) {\n trigger = el.selector; // TODO: use stronger type\n }\n\n if (el instanceof FrameworkView) {\n trigger = el.el;\n }\n\n if (oktaUnderscore.isFunction(options.target)) {\n target = options.target;\n }\n\n if (oktaUnderscore.isElement(options.target)) {\n target = oktaUnderscore.constant(options.target);\n }\n\n if (oktaUnderscore.isString(options.text)) {\n text = oktaUnderscore.constant(options.text);\n } else if (oktaUnderscore.isFunction(options.text)) {\n text = options.text;\n }\n\n this.__instance = new Clipboard(trigger, {\n target: target,\n text: text\n });\n this.done = oktaUnderscore.partial(this.__setCallback, 'success');\n this.error = oktaUnderscore.partial(this.__setCallback, 'error');\n this.done(options.success);\n this.error(options.error);\n },\n __setCallback: function (event, callback) {\n if (!oktaUnderscore.isFunction(callback)) {\n return;\n }\n\n this.__instance.on(event, callback);\n\n return this.__instance;\n }\n});\n/**\n * @class Clipboard\n * @abstract\n *\n * Abstract class that initializes a Clipboard\n * https://clipboardjs.com/\n *\n * ### Example:\n *\n * ```javascript\n * //attach a selector\n * Clipboard.attach('.copy-button');\n *\n * //attach a node, and set a constant string\n * Clipboard.attach(buttonView.el, {\n * text: 'this is the content'\n * });\n *\n * //attach a view, set text dynamically, and set callback\n * Clipboard.attach(buttonView, {\n * text: function (triggerNode) {\n * return $(triggerNode).attr('foo') + model.get('userName');\n * }\n * }).done(function (targetNode) {\n * var msg = ['\"', targetNode.text, '\" is copied'].join('');\n * view.notify('success', msg);\n * });\n *\n * //attach a jquery object, set the target node, and set callback\n * Clipboard.attach($('.customizeTarget'), {\n * target: function (triggerNode) {\n * return triggerNode;\n * },\n * success: function (targetNode) {\n * view.notify('success', 'copied!');\n * }\n * });\n *\n * ```\n */\n\nvar Clipboard$1 = {\n /**\n * @param {String|Node|View|jQuery} [el] el could be a selector (recommended),\n * a dom node, a view or a jquery object\n * @param {Object} [options] Options hash\n * @param {Node|Function} [options.target] a static dom node\n * or a function that takes trigger node and returns a target node\n * @param {String|Function} [options.text] a static string or a function that returns a string dynamically\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @return {Object} The clipboard object\n */\n attach: function (el, options) {\n return new ClipboardClipboardWrapper(el, options);\n }\n};\n\nexport { Clipboard$1 as default };\n","var Keys = {\n UP: 38,\n DOWN: 40,\n DEL: 46,\n TAB: 9,\n RETURN: 13,\n ENTER: 13,\n ESC: 27,\n COMMA: 188,\n PAGEUP: 33,\n PAGEDOWN: 34,\n SPACE: 32,\n BACKSPACE: 8,\n __isKey: function (e, key) {\n return (e.which || e.keyCode) === this[key];\n },\n isEnter: function (e) {\n return this.__isKey(e, 'ENTER');\n },\n isEsc: function (e) {\n return this.__isKey(e, 'ESC');\n },\n isSpaceBar: function (e) {\n return this.__isKey(e, 'SPACE');\n }\n};\n\nexport { Keys as default };\n","import oktaUnderscore from './underscore-wrapper.js';\nimport BaseView from '../views/BaseView.js';\n\nvar Util = {\n redirect: function (url) {\n window.location = url;\n },\n reloadPage: function () {\n window.location.reload();\n },\n constantError: function (errorMessage) {\n return function () {\n throw new Error(errorMessage);\n };\n },\n\n /**\n * Simply convert an URL query key value pair object into an URL query string.\n * Remember NOT to escape the query string when using this util.\n * example:\n * input: {userId: 123, instanceId: undefined, expand: 'schema,app'}\n * output: '?userId=123&expand=schema,app'\n */\n getUrlQueryString: function (queries) {\n oktaUnderscore.isObject(queries) || (queries = {});\n\n const queriesString = oktaUnderscore.without(oktaUnderscore.map(queries, function (value, key) {\n if (value !== undefined && value !== null) {\n return key + '=' + encodeURIComponent(value);\n }\n }), undefined).join('&');\n\n return oktaUnderscore.isEmpty(queriesString) ? '' : '?' + queriesString;\n },\n isABaseView: function (obj) {\n return obj instanceof BaseView || obj.prototype instanceof BaseView || obj === BaseView;\n },\n isSafari: function () {\n // All native, android and iOS chrome browsers has \"Safari\" in their userAgent string, so this regex should\n // evaluate to true for only Safari browser and not any chrome browsers.\n // https://stackoverflow.com/questions/7944460/detect-safari-browser\n // https://stackoverflow.com/questions/13807810/ios-chrome-detection/13808053#13808053\n return /^((?!chrome|android|crios).)*safari/i.test(navigator.userAgent);\n }\n};\n\nexport { Util as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\n\nconst clonedEscapeExpression = _Handlebars2.Utils.escapeExpression;\n\n_Handlebars2.Utils.escapeExpression = function (string) {\n return clonedEscapeExpression(string).replace(/=/g, '=');\n};\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nexport { default } from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../underscore-wrapper.js';\nimport Logger from '../Logger.js';\nimport StringUtil from '../StringUtil.js';\n\n/* eslint @okta/okta-ui/no-specific-modules: 0 */\nconst hbsEscape = _Handlebars2.Utils.escapeExpression;\n\nfunction trim(str) {\n return str && str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction replaceTagsWithPlaceholders(source, tag, tagValue) {\n const escapedBeginningTag = hbsEscape(`<${tag}>`);\n const escapedEndTag = hbsEscape(``);\n const [beginningTag, endTag] = tagValue.split(tag);\n\n if (!source.includes(escapedBeginningTag) && !source.includes(escapedEndTag)) {\n throw Error(`Parsed tag \"${tag}\" is not present in \"${source}\"`);\n } else if (!tagValue.includes(tag)) {\n throw Error(`Parsed tag \"${tag}\" is not present in \"${tagValue}\"`);\n } else if (!beginningTag || !endTag) {\n throw Error(`Template value \"${tagValue}\" must contain beginning and closing tags`);\n }\n\n return source.replace(escapedBeginningTag, beginningTag).replace(escapedEndTag, endTag);\n}\n/* eslint max-statements: [2, 18] */\n\n\n_Handlebars2.registerHelper('i18n', function i18n(options) {\n let params;\n const key = trim(options.hash.code);\n const bundle = trim(options.hash.bundle);\n const args = trim(options.hash.arguments);\n const tags = Object.keys(options.hash).filter(prop => prop.match(/^\\$\\d+/)).map(prop => ({\n tag: prop,\n value: options.hash[prop]\n }));\n\n if (args) {\n params = oktaUnderscore.map(trim(args).split(';'), function mapParam(param) {\n param = trim(param);\n let val;\n /*\n * the context(data) may be a deep object, ex {user: {name: 'John', gender: 'M'}}\n * arguments may be 'user.name'\n * return data['user']['name']\n */\n\n oktaUnderscore.each(param.split('.'), p => {\n val = val ? val[p] : this[p];\n });\n\n return val;\n }, this);\n }\n\n const localizedValue = StringUtil.localize(key, bundle, params);\n\n if (tags.length < 1) {\n // No HTML tags provided - return the localized and escaped string\n return localizedValue;\n }\n\n let escapedString = hbsEscape(localizedValue);\n\n try {\n tags.forEach(tag => {\n escapedString = replaceTagsWithPlaceholders(escapedString, tag.tag, tag.value);\n });\n return new _Handlebars2.SafeString(escapedString);\n } catch (err) {\n Logger.error(err.toString());\n return localizedValue;\n }\n});\n","import FrameworkView from './View.js';\nimport oktaUnderscore from '../util/underscore-wrapper.js';\n\n/* eslint-disable max-statements */\n/**\n * Archer.ListView is a {@link src/framework/View} that operates on a\n * collection and builds a list of \"things\" of the same type.\n *\n * Automagically adds, removes and sorts upon standard collection events.\n *\n * Listen to collection events so the ListView will do the right thing when\n * a model is added or the collection is reset or sorted.\n *\n * @class src/framework/ListView\n * @extends src/framework/View\n * @param {Object} options options hash\n * @param {Object} options.collection The collection which this view operates on\n * @example\n * var UserList = Archer.ListView.extend({\n * tagName: 'ul',\n * item: '
  • {{fname}} {{lname}}
  • '\n * });\n *\n * var users = new Archer.Collection([\n * {fname: 'John', lname: 'Doe'},\n * {fname: 'Jane', lname: 'Doe'}\n * ]);\n *\n * var userList = new UserList({collection: users}).render();\n * userList.el; //=> \"
    • John Doe
    • Jane Doe
    \"\n *\n * users.push({fname: 'Jim', lname: 'Doe'});\n * userList.el; //=> \"
    • John Doe
    • Jane Doe
    • Jim Doe
    \"\n *\n * users.first().destroy();\n * userList.el; //=> \"
    • Jane Doe
    • Jim Doe
    \"\n */\n\nvar ListView = FrameworkView.extend(\n/** @lends src/framework/ListView.prototype */\n{\n constructor: function () {\n FrameworkView.apply(this, arguments);\n\n if (!this.collection) {\n throw new Error('Missing collection');\n }\n\n this.listenTo(this.collection, 'reset sort', this.reset);\n this.listenTo(this.collection, 'add', this.addItem);\n\n if (this.fetchCollection) {\n this.collection.fetch();\n } else {\n this.collection.each(this.addItem, this);\n }\n },\n\n /**\n * The view/template we will use to render each model in the collection.\n * @type {String|module:Okta.View}\n */\n item: null,\n\n /**\n * A selector in the local template where to append each item\n * @type {String}\n */\n itemSelector: null,\n\n /**\n * Empty the list and re-add everything from the collection.\n * Usefull for handling `collection.reset()` or for handling the initial load\n * @protected\n */\n reset: function () {\n this.removeChildren();\n this.collection.each((model, index) => {\n this.addItem(model, index);\n });\n return this;\n },\n\n /**\n * Add an item view to the list that will represent one model from the collection\n *\n * Listen to the model so when it is destoyed or removed from the collection\n * this item will remove itself from the list\n *\n * @param {Backbone.Model} model The model this row operates on\n * @protected\n */\n addItem: function (model) {\n var view = this.add(this.item, this.itemSelector, {\n options: {\n model: model\n }\n }).last();\n\n if (this.state && this.state.get('trackItemAdded')) {\n this.state.trigger('itemAdded', view);\n }\n\n view.listenTo(model, 'destroy remove', view.remove);\n return this;\n },\n addShowMore: oktaUnderscore.noop\n});\n\nexport { ListView as default };\n","import ListView from '../framework/ListView.js';\nimport BaseView from './BaseView.js';\n\n/**\n * See {@link src/framework/ListView} for more detail and examples from the base class.\n * @class module:Okta.ListView\n * @extends src/framework/ListView\n * @mixes module:Okta.View\n */\n\nvar Backbone_ListView = BaseView.decorate(ListView);\n\nexport { Backbone_ListView as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport BaseView from '../BaseView.js';\n\nconst optionsTemplate = _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 133\n },\n \"end\": {\n \"line\": 1,\n \"column\": 142\n }\n }\n }) : helper));\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

    \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"subtitle\") || (depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"subtitle\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 192\n },\n \"end\": {\n \"line\": 1,\n \"column\": 204\n }\n }\n }) : helper)) + \"

    \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"icon\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 66\n },\n \"end\": {\n \"line\": 1,\n \"column\": 120\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 120\n },\n \"end\": {\n \"line\": 1,\n \"column\": 149\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 149\n },\n \"end\": {\n \"line\": 1,\n \"column\": 215\n }\n }\n })) != null ? stack1 : \"\") + \"\";\n },\n \"useData\": true\n});\n\nconst BaseDropDownDropDownOption = BaseView.extend({\n tagName: 'li',\n events: {\n click: function (e) {\n e.preventDefault();\n this.action && this.action.call(this);\n }\n },\n constructor: function () {\n BaseView.apply(this, arguments);\n this.$el.addClass('okta-dropdown-option option');\n },\n render: function () {\n this.$el.html(optionsTemplate({\n icon: oktaUnderscore.result(this, 'icon'),\n className: oktaUnderscore.result(this, 'className') || '',\n title: oktaUnderscore.result(this, 'title'),\n subtitle: oktaUnderscore.result(this, 'subtitle'),\n seleniumId: oktaUnderscore.result(this, 'seleniumId')\n }));\n\n if (oktaUnderscore.result(this, 'disabled')) {\n this.disable();\n }\n\n return this;\n },\n disable: function () {\n this.$el.addClass('option-disabled');\n this.$el.find('a').attr('tabindex', '-1');\n }\n});\nvar BaseDropDown = BaseView.extend({\n events: {\n 'click a.option-selected': function (e) {\n e.preventDefault();\n\n if (oktaUnderscore.result(this, 'disabled')) {\n e.stopPropagation();\n }\n },\n 'click .dropdown-disabled': function (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n items: [],\n constructor: function () {\n const className = this.className; // In this very specific case we want to NOT append className to $el\n // but to the tag in the template\n // so we want to disable backbone default functionality.\n\n this.className = null;\n BaseView.apply(this, arguments);\n this.className = className;\n this.$el.addClass('dropdown more-actions float-l');\n\n oktaUnderscore.each(oktaUnderscore.result(this, 'items'), function (option) {\n this.addOption(option, this.options);\n }, this);\n },\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"screenReaderText\") || (depth0 != null ? lookupProperty(depth0, \"screenReaderText\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"screenReaderText\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 249\n },\n \"end\": {\n \"line\": 1,\n \"column\": 269\n }\n }\n }) : helper)) + \"\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"icon\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 146\n },\n \"end\": {\n \"line\": 1,\n \"column\": 200\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"screenReaderText\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 200\n },\n \"end\": {\n \"line\": 1,\n \"column\": 283\n }\n }\n })) != null ? stack1 : \"\") + \"\" + alias4((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 318\n },\n \"end\": {\n \"line\": 1,\n \"column\": 327\n }\n }\n }) : helper)) + \"
      \";\n },\n \"useData\": true\n }),\n getTemplateData: function () {\n const className = [oktaUnderscore.result(this, 'className') || '', oktaUnderscore.result(this, 'disabled') ? 'dropdown-disabled' : ''];\n return {\n icon: oktaUnderscore.result(this, 'icon'),\n className: oktaJQueryStatic.trim(className.join(' ')),\n title: oktaUnderscore.result(this, 'title'),\n screenReaderText: oktaUnderscore.result(this, 'screenReaderText')\n };\n },\n addOption: function (proto, options) {\n this.add(BaseDropDownDropDownOption.extend(proto), 'ul.options-wrap', {\n options: options || {}\n });\n }\n});\n\nexport { BaseDropDown as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport Logger from '../../../util/Logger.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport ViewUtil from '../../../util/ViewUtil.js';\nimport BaseView from '../../BaseView.js';\n\n/* eslint max-params: [2, 6] */\nconst LABEL_OPTIONS = ['model', 'id', 'inputId', 'type', 'label', 'sublabel', 'tooltip', 'name', 'group'];\nconst CONTAINER_OPTIONS = ['wide', 'multi', 'input', 'label-top', 'explain', 'explain-top', 'customExplain', 'model', 'name', 'type', 'autoRender', 'multirowError'];\nconst WRAPPER_OPTIONS = ['model', 'name', 'label-top', 'readOnly', 'events', 'initialize', 'showWhen', 'bindings', 'render', 'className', 'data-se', 'toggleWhen', 'group'];\nconst INPUT_OPTIONS = ['model', 'name', 'inputId', 'type', // base options\n'input', // custom input\n'placeholder', 'label', // labels\n'readOnly', 'read', 'disabled', 'readModeString', // modes\n'options', // select/radio\n'deps', // used to specify inputs that have dependencies and show a callout to user on select\n'from', 'to', // model transformers,\n'autoRender', // model attributes change event to trigger rerendering of the input\n'inlineValidation', // control inline validating against the model on focus lost\n'validateOnlyIfDirty', // check if field has been interacted with and then validate\n'ariaLabel', // 508 compliance for inputs that do not have label associated with them\n'params', 'autoComplete', // autocomplete attribute\n'sortByKey'];\nconst OTHER_OPTIONS = ['errorField' // widgets params - for input specific widgets\n];\n\nconst ALL_OPTIONS = oktaUnderscore.uniq(oktaUnderscore.union(LABEL_OPTIONS, CONTAINER_OPTIONS, WRAPPER_OPTIONS, INPUT_OPTIONS, OTHER_OPTIONS));\n\nconst SAVE_BUTTON_PHASES = ['• ', '• • ', '• • • ', '• • • •', ' • • •', ' • •', ' •', ' ', ' ', ' '];\n\nfunction decorateDoWhen(doWhen) {\n if (doWhen && !doWhen['__edit__']) {\n return oktaUnderscore.extend({\n __edit__: oktaUnderscore.constant(true)\n }, doWhen);\n }\n}\n\nfunction createButton(options) {\n options = oktaUnderscore.pick(options || {}, 'action', 'id', 'className', 'text', 'type');\n let timeoutId;\n let intervalId;\n let phaseCount;\n return BaseView.extend({\n tagName: 'input',\n className: 'button',\n events: {\n click: function () {\n if (options.action && !this.disabled()) {\n options.action.call(this);\n }\n },\n keyup: function (e) {\n if (Keys.isEnter(e) && options.action && !this.disabled()) {\n options.action.call(this);\n }\n }\n },\n disabled: function () {\n return this.$el.prop('disabled') === true;\n },\n disable: function () {\n this.$el.prop('disabled', true);\n this.$el.addClass('btn-disabled');\n },\n enable: function () {\n this.$el.prop('disabled', false);\n this.$el.removeClass('btn-disabled');\n },\n initialize: function () {\n const self = this;\n this.$el.attr('type', options.type === 'save' ? 'submit' : 'button');\n this.$el.val(options.text);\n\n if (options.id) {\n this.$el.attr('id', options.id);\n }\n\n if (options.className) {\n this.$el.addClass(options.className);\n }\n\n if (options.type) {\n this.$el.attr('data-type', options.type);\n }\n\n this.$el.mousedown(function () {\n self.model.set('__pending__', true);\n });\n this.$el.mouseup(function () {\n self.model.set('__pending__', false);\n });\n this.listenTo(this.model, 'form:set-saving-state', function () {\n this.disable();\n\n if (options.type === 'save') {\n timeoutId = setTimeout(oktaUnderscore.bind(this.__changeSaveText, this), 1000);\n }\n });\n this.listenTo(this.model, 'form:clear-saving-state', function () {\n this.enable();\n\n if (options.type === 'save') {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n this.$el.val(options.text);\n }\n });\n },\n __changeSaveText: function () {\n phaseCount = 0;\n intervalId = setInterval(oktaUnderscore.bind(this.__showLoadingText, this), 200);\n },\n __showLoadingText: function () {\n this.$el.val(SAVE_BUTTON_PHASES[phaseCount++ % SAVE_BUTTON_PHASES.length]);\n }\n });\n}\n\nfunction validateInput(options, model) {\n /* eslint max-statements: 0, complexity: 0 */\n options || (options = {});\n\n if (options.type === 'label') {\n if (!options.label) {\n Logger.warn('A label input must have a \"label\" parameter', options);\n }\n\n return;\n }\n\n if (options.type === 'button') {\n if (!options.title && !options.icon) {\n Logger.warn('A button input must have a \"title\" and/or an \"icon\" parameter', options);\n }\n\n if (!options.click && !options.href) {\n Logger.warn('A button input must have a \"click\" and/or an \"href\" parameter', options);\n }\n\n return;\n }\n\n if (!options.name && !options.input) {\n Logger.warn('Missing \"name\" or \"input\" parameters', options);\n }\n\n if (oktaUnderscore.isArray(options.name) && oktaUnderscore.isArray(options.input)) {\n throw new Error('Not allowed to have both \"name\" and \"input\" defined as array.');\n }\n\n if (options.type !== 'list' && options.name && model && model.allows) {\n let names = [];\n\n if (oktaUnderscore.isArray(options.name)) {\n names = options.name;\n } else {\n names.push(options.name);\n }\n\n oktaUnderscore.each(names, function (name) {\n if (!model.allows(name)) {\n throw new Error('field not allowed: ' + options.name);\n }\n });\n }\n\n if (oktaUnderscore.isArray(options.input) && options.type !== 'list') {\n oktaUnderscore.each(options.input, function (input) {\n validateInput(input, model);\n });\n }\n\n const keys = oktaUnderscore.keys(options);\n\n const intersection = oktaUnderscore.intersection(keys, ALL_OPTIONS);\n\n if (oktaUnderscore.size(intersection) !== oktaUnderscore.size(options)) {\n const fields = oktaUnderscore.clone(ALL_OPTIONS);\n\n Logger.warn('Invalid input parameters', oktaUnderscore.without(keys, ...fields), options);\n }\n}\n\nfunction generateInputOptions(options, form, createFn) {\n options = oktaUnderscore.clone(options);\n\n if (oktaUnderscore.contains(['list', 'group'], options.type)) {\n options.params = oktaUnderscore.defaults({\n create: createFn,\n inputs: oktaUnderscore.map(oktaUnderscore.isArray(options.input) ? options.input : [options.input], function (input) {\n return oktaUnderscore.first(generateInputOptions(input, form, createFn));\n })\n }, options.params || {});\n delete options.input;\n }\n\n const inputs = oktaUnderscore.isArray(options.input) ? oktaUnderscore.clone(options.input) : [options];\n return oktaUnderscore.map(inputs, function (input) {\n const target = oktaUnderscore.defaults({\n model: form.model\n }, input, oktaUnderscore.omit(options, 'input', 'inputs'), form.options, {\n id: oktaUnderscore.uniqueId('input'),\n readOnly: form.isReadOnly(),\n read: form.hasReadMode()\n });\n\n if (form.isReadOnly()) {\n target.read = target.readOnly = true;\n }\n\n return target;\n });\n}\n\nvar FormUtil = {\n LABEL_OPTIONS: LABEL_OPTIONS,\n CONTAINER_OPTIONS: CONTAINER_OPTIONS,\n WRAPPER_OPTIONS: WRAPPER_OPTIONS,\n INPUT_OPTIONS: INPUT_OPTIONS,\n generateInputOptions: generateInputOptions,\n changeEventString: function (fieldNames) {\n return 'change:' + fieldNames.join(' change:');\n },\n createReadFormButton: function (options) {\n let action;\n let text;\n let ariaLabel;\n\n if (options.type === 'cancel') {\n text = ariaLabel = StringUtil.localize('oform.cancel', 'courage');\n\n action = function () {\n this.model.trigger('form:cancel');\n };\n } else {\n text = StringUtil.localize('oform.edit', 'courage');\n ariaLabel = text + ' ' + options.formTitle;\n\n action = function () {\n this.model.set('__edit__', true);\n };\n }\n\n return BaseView.extend({\n tagName: 'a',\n className: options.className,\n attributes: {\n href: '#',\n 'aria-label': ariaLabel\n },\n // TODO: refactor to enforce precompiled templates OKTA-309852\n // eslint-disable-next-line @okta/okta-ui/no-bare-templates\n template: function () {\n return oktaUnderscore.escape(text);\n },\n events: {\n click: function (e) {\n e.preventDefault();\n action.call(this);\n }\n }\n });\n },\n createButton: function (options) {\n options = oktaUnderscore.clone(options);\n\n switch (options.type) {\n case 'save':\n oktaUnderscore.defaults(options, {\n className: 'button-primary'\n });\n\n break;\n\n case 'cancel':\n oktaUnderscore.defaults(options, {\n className: 'button-clear',\n text: StringUtil.localize('oform.cancel', 'courage'),\n action: function () {\n this.model.trigger('form:cancel');\n }\n });\n\n break;\n\n case 'previous':\n oktaUnderscore.defaults(options, {\n text: StringUtil.localize('oform.previous', 'courage'),\n action: function () {\n this.model.trigger('form:previous');\n }\n });\n\n break;\n }\n\n return createButton(options);\n },\n validateInput: validateInput,\n\n /**\n * Applies a show-when logic on a view instance.\n * The show-when is a map of a model field name -> a boolean or a function that returns a boolean.\n * The view will toggle based on the field value.\n *\n * @param {Okta.View} view a view instance that has a this.model attached to it\n * @param {Object} showWhen\n */\n applyShowWhen: function (view, showWhen) {\n const toggleAndResize = function (bool) {\n return function () {\n // The `toggle` is here since an event may be triggered before the el is in the DOM\n // and in that case slide events may not function as expected.\n view.$el.toggle(bool);\n view.model.trigger('form:resize');\n };\n };\n\n ViewUtil.applyDoWhen(view, decorateDoWhen(showWhen), function (bool, options) {\n if (!options.animate) {\n view.$el.toggle(bool);\n } else {\n view.$el['slide' + (bool ? 'Down' : 'Up')](200, toggleAndResize(bool));\n }\n });\n },\n applyToggleWhen: function (view, toggleWhen) {\n ViewUtil.applyDoWhen(view, decorateDoWhen(toggleWhen), function (bool, options) {\n view.$el.toggle(bool);\n view.model.trigger('form:resize');\n\n if (options.animate) {\n view.render();\n }\n });\n }\n};\n\nexport { FormUtil as default };\n","import BaseView from '../../BaseView.js';\nimport FormUtil from '../helpers/FormUtil.js';\n\nvar ReadModeBar = BaseView.extend({\n el: '',\n formTitle: '',\n modelEvents: {\n 'change:__edit__': 'toggle'\n },\n initialize: function () {\n this.addButton();\n },\n addButton: function () {\n if (this.model.get('__edit__')) {\n this.add(FormUtil.createReadFormButton({\n type: 'cancel'\n }));\n } else {\n this.add(FormUtil.createReadFormButton({\n type: 'edit',\n formTitle: this.formTitle,\n className: 'disable-in-read-only'\n }));\n }\n },\n toggle: function () {\n this.removeChildren();\n this.addButton();\n }\n});\n\nexport { ReadModeBar as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport BaseView from '../../BaseView.js';\nimport FormUtil from '../helpers/FormUtil.js';\n\nconst proto = {\n className: function () {\n return 'o-form-button-bar';\n },\n buttonOrder: ['previous', 'save', 'cancel'],\n initialize: function (options) {\n const buttonConfigs = {\n previous: {\n type: 'previous'\n },\n save: {\n type: 'save',\n text: oktaUnderscore.resultCtx(options, 'save', this),\n id: oktaUnderscore.resultCtx(options, 'saveId', this),\n className: oktaUnderscore.resultCtx(options, 'saveClassName', this)\n },\n cancel: {\n type: 'cancel',\n text: oktaUnderscore.resultCtx(options, 'cancel', this)\n }\n };\n\n this.__getButtonOrder(options).forEach(buttonName => {\n this.addButton(buttonConfigs[buttonName]);\n });\n },\n\n /**\n * Adds a buttomn to the toolbar\n * @param {Object} params button parameters\n * @param {Object} options {@link Okta.View#add} options\n */\n addButton: function (params, options) {\n return this.add(FormUtil.createButton(params), options);\n },\n __getButtonOrder: function (options) {\n const buttonOrder = oktaUnderscore.resultCtx(options, 'buttonOrder', this, this.buttonOrder);\n\n const buttonsToSkip = [];\n\n if (options.noSubmitButton) {\n buttonsToSkip.push('save');\n }\n\n if (options.noCancelButton) {\n buttonsToSkip.push('cancel');\n }\n\n if (!options.hasPrevStep) {\n buttonsToSkip.push('previous');\n }\n\n return oktaUnderscore.without(buttonOrder, ...buttonsToSkip);\n }\n};\nvar Toolbar = BaseView.extend(proto);\n\nexport { Toolbar as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport BaseView from '../../BaseView.js';\n\nvar ErrorBanner = BaseView.extend({\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"errorSummary\") || (depth0 != null ? lookupProperty(depth0, \"errorSummary\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"errorSummary\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 130\n },\n \"end\": {\n \"line\": 1,\n \"column\": 146\n }\n }\n }) : helper)) + \"

      \";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((lookupProperty(helpers, \"i18n\") || depth0 && lookupProperty(depth0, \"i18n\") || container.hooks.helperMissing).call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"i18n\",\n \"hash\": {\n \"bundle\": \"courage\",\n \"code\": \"oform.errorbanner.title\"\n },\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 161\n },\n \"end\": {\n \"line\": 1,\n \"column\": 217\n }\n }\n })) + \"

      \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"
      \" + ((stack1 = lookupProperty(helpers, \"if\").call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? lookupProperty(depth0, \"errorSummary\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.program(3, data, 0),\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 107\n },\n \"end\": {\n \"line\": 1,\n \"column\": 228\n }\n }\n })) != null ? stack1 : \"\") + \"
      \";\n },\n \"useData\": true\n }),\n modelEvents: {\n 'form:clear-errors': 'remove'\n }\n});\n\nexport { ErrorBanner as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport StringUtil from '../../../util/StringUtil.js';\n\nconst FIELD_REGEX = /^([\\S]+): (.+)$/;\nvar ErrorParser = {\n /**\n * Helper function that returns the json output of an xhr objext\n * @param {jqXhr} xhr\n * @return {Object}\n */\n getResponseJSON: function (xhr) {\n try {\n return xhr.responseJSON || JSON.parse(xhr.responseText);\n } catch (e) {// ignore error\n }\n },\n\n /**\n * Parses an error summary to extract a field name and an error message\n * @param {String} errorSummary The raw error summary\n * @return {String[]} An array with two members: [field name, error message]\n */\n parseErrorSummary: function (errorSummary) {\n const matches = errorSummary.match(FIELD_REGEX); // error format is: `fieldName: The field cannot be left blank`\n\n if (matches) {\n return [matches[1], matches[2]];\n }\n },\n\n /**\n * Parses an error cause object to extract a field name from property attribute\n * and an error message form errorSummary attribute. It looks to see if there is\n * a custom override/translation for the erorrCause.reason before using the errorSummary\n * @param {Object} errorCause object\n * @return {String[]} An array with two members: [field name, error message]\n */\n parseErrorCauseObject: function (errorCause) {\n if (errorCause.property && errorCause.errorSummary) {\n const localizedMsg = StringUtil.localize(errorCause.reason);\n const apiMsg = errorCause.errorSummary;\n const field = errorCause.property;\n const errorMessage = localizedMsg.indexOf('L10N_ERROR[') === -1 ? localizedMsg : apiMsg;\n return [field, errorMessage];\n }\n },\n parseErrors: function (resp) {\n const responseJSON = this.getResponseJSON(resp);\n return oktaUnderscore.map(responseJSON && responseJSON.errorCauses || [], function (errorCause) {\n return ('' + errorCause.errorSummary).replace(FIELD_REGEX, '$2');\n });\n },\n\n /**\n * Parses the response for errors\n * Returns a map of field names > array or error messages\n * Example:\n * ```javascript\n * {\n * url: ['The field cannot be left blank', 'The field has to be a valid URI'],\n * name: ['The field cannot be left blank']\n * }\n * ```\n * @param {Object} resp\n * @return {Object}\n */\n parseFieldErrors: function (resp) {\n const responseJSON = this.getResponseJSON(resp);\n const errors = {}; // xhr error object\n\n if (responseJSON) {\n /* eslint complexity: [2, 9] */\n oktaUnderscore.each(responseJSON.errorCauses || [], function (cause) {\n let res = [];\n\n if (cause.property && cause.errorSummary) {\n res = this.parseErrorCauseObject(cause);\n } else if (cause.location && cause.errorSummary) {\n // To handle new api error format for field level errors.\n // Ignoring the reason attribute as the translation happens in the API layer and not in the client any more.\n res = [cause.location, cause.errorSummary];\n } else {\n res = this.parseErrorSummary(cause && cause.errorSummary || '');\n }\n\n if (res) {\n const fieldName = res[0];\n const message = res[1];\n errors[fieldName] || (errors[fieldName] = []);\n errors[fieldName].push(message);\n }\n }, this);\n } // validation key/value object\n else if (oktaUnderscore.isObject(resp) && oktaUnderscore.size(resp)) {\n oktaUnderscore.each(resp, function (msg, field) {\n errors[field] = [msg];\n });\n }\n\n return oktaUnderscore.size(errors) ? errors : undefined;\n }\n};\n\nexport { ErrorParser as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Logger from '../../../util/Logger.js';\nimport Util from '../../../util/Util.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport BaseView from '../../BaseView.js';\n\nconst isABaseView = Util.isABaseView;\n/**\n * @class InputContainer\n * @private\n *\n * TODO: OKTA-80796\n * Attention: Please change with caution since this is used in other places\n */\n\nvar InputContainer = BaseView.extend({\n attributes: function () {\n return {\n 'data-se': 'o-form-input-container'\n };\n },\n className: function () {\n let className = 'o-form-input';\n\n if (this.options.wide) {\n className += ' o-form-wide';\n }\n\n if (oktaUnderscore.contains([1, 2, 3, 4], this.options.multi)) {\n className += ' o-form-multi-input-' + this.options.multi;\n\n if (oktaUnderscore.isArray(this.options.input)) {\n const inputGroup = oktaUnderscore.find(this.options.input, function (input) {\n return oktaUnderscore.contains(['text+select', 'select+text'], input.options.type);\n });\n\n inputGroup && (className += ' o-form-multi-input-group-' + this.options.multi);\n }\n }\n\n return className;\n },\n _getNames: function () {\n const names = oktaUnderscore.isArray(this.options.name) ? this.options.name : [this.options.name];\n /*eslint complexity: 0 */\n\n if (this.options.type === 'group') {\n names.push.apply(names, oktaUnderscore.pluck(this.options.input[0].options.params.inputs, 'name'));\n } else if (oktaUnderscore.isArray(this.options.name)) {\n if (this.options.input && this.options.input.options && this.options.input.options.name) {\n names.push(this.options.input.options.name);\n }\n } else if (this.options.input) {\n if (oktaUnderscore.isArray(this.options.input)) {\n oktaUnderscore.each(this.options.input, function (inputItem) {\n names.push(inputItem.options.name);\n });\n } else {\n names.push(this.options.input.options.name);\n }\n }\n\n return oktaUnderscore.uniq(oktaUnderscore.compact(names));\n },\n _getInputElement: function () {\n // NOTE: this.options.input is sometimes not an array under test\n const lastInput = Array.isArray(this.options.input) ? oktaUnderscore.last(this.options.input) : this.options.input; // FIXME: replace with _.get\n\n const id = lastInput && lastInput.options && lastInput.options.inputId;\n const el = id ? this.$('#' + id) : null;\n return el && el.length ? el : null;\n },\n constructor: function () {\n /* eslint max-statements: [2, 18] */\n BaseView.apply(this, arguments);\n const explainTop = this.options['explain-top'] && this.options['label-top'];\n\n if (this.options.input) {\n if (oktaUnderscore.isArray(this.options.input)) {\n oktaUnderscore.each(this.options.input, function (inputItem) {\n this.add(inputItem, {\n prepend: !explainTop\n });\n }, this);\n } else {\n this.add(this.options.input, {\n prepend: !explainTop\n });\n }\n }\n\n this.__setExplain(this.options);\n\n const names = this._getNames();\n\n this.listenTo(this.model, 'form:field-error', function (name, errors) {\n if (oktaUnderscore.contains(names, name)) {\n this.__setError(errors, explainTop);\n }\n });\n this.listenTo(this.model, 'form:clear-errors change:' + names.join(' change:'), this.__clearError);\n this.listenTo(this.model, 'form:clear-error:' + names.join(' form:clear-error:'), this.__clearError);\n\n if (oktaUnderscore.resultCtx(this.options, 'autoRender', this)) {\n this.listenTo(this.model, 'change:' + this.options.name, this.render);\n }\n\n this.__errorState = false;\n },\n\n /**\n * Populates the explain on the input container (if it exists). There are\n * two ways to use this:\n * 1. Raw text - wraps in the correct html template\n * 2. Custom html\n * - pass in a View class (preferred)\n * - pass in an instance of a View\n * Some additional notes:\n * - You can pass a function that returns any of the above\n * - This maintains support for the deprecated \"customExplain\" property\n * that was used before. This pattern is superseded by explain, so use\n * that instead.\n * @private\n */\n __setExplain: function (options) {\n let explain; // Deprecated - if you need custom html, use explain instead\n\n if (options.customExplain) {\n Logger.warn('Deprecated - use explain instead of customExplain');\n this.add(this.options.customExplain);\n return;\n }\n\n explain = options.explain;\n\n if (oktaUnderscore.isFunction(explain) && !isABaseView(explain)) {\n explain = oktaUnderscore.resultCtx(this.options, 'explain', this);\n }\n\n if (!explain) {\n return;\n }\n\n if (isABaseView(explain)) {\n this.template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"

      \";\n },\n \"useData\": true\n });\n this.add(explain, ' > .o-form-explain');\n } else {\n this.template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"explain\") || (depth0 != null ? lookupProperty(depth0, \"explain\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"explain\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 26\n },\n \"end\": {\n \"line\": 1,\n \"column\": 37\n }\n }\n }) : helper)) + \"

      \";\n },\n \"useData\": true\n });\n }\n },\n\n /**\n * Highlight the input as invalid (validation failed)\n * Adds an explaination message of the error\n * @private\n */\n __setError: function (errors, explainTop) {\n this.__errorState = true;\n this.$el.addClass('o-form-has-errors');\n\n const errorId = oktaUnderscore.uniqueId('input-container-error');\n\n const html = this.__getHTMLForError(oktaUnderscore.flatten(errors), errorId);\n\n const $elExplain = this.$('.o-form-explain').not('.o-form-input-error').first();\n\n if ($elExplain.length && !explainTop) {\n $elExplain.before(html);\n } else {\n this.$el.append(html);\n }\n\n const target = this._getInputElement() || this.$el;\n target.attr('aria-describedby', errorId);\n target.attr('aria-invalid', true);\n },\n __getHTMLForError: function (errors, errorId) {\n const tmpl = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + alias4((helper = (helper = lookupProperty(helpers, \"text\") || (depth0 != null ? lookupProperty(depth0, \"text\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"text\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 184\n },\n \"end\": {\n \"line\": 1,\n \"column\": 192\n }\n }\n }) : helper)) + \"

      \";\n },\n \"useData\": true\n });\n\n const iconLabel = StringUtil.localize('oform.error.icon.ariaLabel', 'courage'); // 'Error'\n\n if (this.options.multirowError) {\n let html = '';\n errors.forEach(error => {\n html = html + tmpl({\n errorId: errorId,\n iconLabel: iconLabel,\n text: error\n });\n });\n return html;\n }\n\n return tmpl({\n errorId: errorId,\n iconLabel: iconLabel,\n text: errors.join(', ')\n });\n },\n\n /**\n * Un-highlight the input and remove explaination text\n * @private\n */\n __clearError: function () {\n if (this.__errorState) {\n this.$('.o-form-input-error').remove();\n const target = this._getInputElement() || this.$el;\n target.attr('aria-describedby', null);\n target.attr('aria-invalid', null);\n this.$el.removeClass('o-form-has-errors');\n this.__errorState = false;\n\n oktaUnderscore.defer(() => {\n this.model.trigger('form:resize');\n });\n }\n },\n focus: function () {\n this.each(function (view) {\n if (view.focus) {\n return view.focus();\n }\n });\n return this;\n }\n});\n\nexport { InputContainer as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\n\nconst registry = {};\n\nfunction isBaseInput(input) {\n if (oktaUnderscore.isFunction(input)) {\n return oktaUnderscore.isFunction(input.prototype.editMode) && oktaUnderscore.isFunction(input.prototype.readMode);\n } else {\n return oktaUnderscore.isObject(input) && oktaUnderscore.isFunction(input.editMode) && oktaUnderscore.isFunction(input.readMode);\n }\n}\n/**\n * @class module:Okta.internal.views.forms.helpers.InputRegistry\n */\n\n\nvar InputRegistry = /** @lends module:Okta.internal.views.forms.helpers.InputRegistry */\n{\n isBaseInput: isBaseInput,\n\n /**\n * Register a form input\n * @param {String} type string identifier for the input\n * @param {BaseInput} input the input to register\n * @return {void}\n */\n register: function (type, input) {\n registry[type] = input;\n },\n\n /**\n * Get a form input by type\n * @param {Object} options input definition\n * @param {String} options.type string identifier for the input\n * @return {BaseInput} a matching input\n */\n get: function (options) {\n const input = registry[options.type];\n return input && (isBaseInput(input) ? input : input(options));\n },\n\n /**\n * Unregister an input type\n * @param {String} type\n */\n unregister: function (type) {\n delete registry[type];\n }\n};\n\nexport { InputRegistry as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport InputRegistry from './InputRegistry.js';\n\n/* eslint complexity: 0, max-statements: 0 */\n\nfunction createInput(Input, options) {\n if (InputRegistry.isBaseInput(Input)) {\n return Input.prototype ? new Input(oktaUnderscore.omit(options, 'input')) : Input;\n } else {\n return Input;\n }\n}\n\nfunction create(options) {\n options = oktaUnderscore.clone(options);\n\n if (options.input) {\n return createInput(options.input, options);\n }\n\n const Input = InputRegistry.get(options);\n\n if (!Input) {\n throw new Error('unknown input: ' + options.type);\n }\n\n return createInput(Input, options);\n}\n\nfunction supports(options) {\n return !!options.input || !!InputRegistry.get(options);\n}\n\nvar InputFactory = {\n create: create,\n supports: supports\n};\n\nexport { InputFactory as default };\n","/*\n * qTip2 - Pretty powerful tooltips - v3.0.3-5-g\n * http://qtip2.com\n *\n * Copyright (c) 2017 \n * Released under the MIT licenses\n * http://jquery.org/license\n *\n * Date: Wed May 24 2017 01:22 UTC+0000\n * Plugins: tips modal viewport svg imagemap ie6\n * Styles: core basic css3\n */\n/*global window: false, jQuery: false, console: false, define: false */\n\n// Modified to support ESM - OKTA-369648\nimport jQuery from 'jquery';\n\n/* Cache window, document, undefined */\n(function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n \tif(!jQuery.fn.qtip) {\n\t\tfactory(jQuery);\n\t}\n}\n(function($) {\n\t\"use strict\"; // Enable ECMAScript \"strict\" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/\n;// Munge the primitives - Paul Irish tip\nvar TRUE = true,\nFALSE = false,\nNULL = null,\n\n// Common variables\nX = 'x', Y = 'y',\nWIDTH = 'width',\nHEIGHT = 'height',\n\n// Positioning sides\nTOP = 'top',\nLEFT = 'left',\nBOTTOM = 'bottom',\nRIGHT = 'right',\nCENTER = 'center',\n\n// Position adjustment types\nFLIP = 'flip',\nFLIPINVERT = 'flipinvert',\nSHIFT = 'shift',\n\n// Shortcut vars\nQTIP, PROTOTYPE, CORNER, CHECKS,\nPLUGINS = {},\nNAMESPACE = 'qtip',\nATTR_HAS = 'data-hasqtip',\nATTR_ID = 'data-qtip-id',\nWIDGET = ['ui-widget', 'ui-tooltip'],\nSELECTOR = '.'+NAMESPACE,\nINACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' '),\n\nCLASS_FIXED = NAMESPACE+'-fixed',\nCLASS_DEFAULT = NAMESPACE + '-default',\nCLASS_FOCUS = NAMESPACE + '-focus',\nCLASS_HOVER = NAMESPACE + '-hover',\nCLASS_DISABLED = NAMESPACE+'-disabled',\n\nreplaceSuffix = '_replacedByqTip',\noldtitle = 'oldtitle',\ntrackingBound,\n\n// Browser detection\nBROWSER = {\n\t/*\n\t * IE version detection\n\t *\n\t * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment\n\t * Credit to James Padolsey for the original implemntation!\n\t */\n\tie: (function() {\n\t\t/* eslint-disable no-empty */\n\t\tvar v, i;\n\t\tfor (\n\t\t\tv = 4, i = document.createElement('div');\n\t\t\t(i.innerHTML = '') && i.getElementsByTagName('i')[0];\n\t\t\tv+=1\n\t\t) {}\n\t\treturn v > 4 ? v : NaN;\n\t\t/* eslint-enable no-empty */\n\t})(),\n\n\t/*\n\t * iOS version detection\n\t */\n\tiOS: parseFloat(\n\t\t('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])\n\t\t.replace('undefined', '3_2').replace('_', '.').replace('_', '')\n\t) || FALSE\n};\n;function QTip(target, options, id, attr) {\n\t// Elements and ID\n\tthis.id = id;\n\tthis.target = target;\n\tthis.tooltip = NULL;\n\tthis.elements = { target: target };\n\n\t// Internal constructs\n\tthis._id = NAMESPACE + '-' + id;\n\tthis.timers = { img: {} };\n\tthis.options = options;\n\tthis.plugins = {};\n\n\t// Cache object\n\tthis.cache = {\n\t\tevent: {},\n\t\ttarget: $(),\n\t\tdisabled: FALSE,\n\t\tattr: attr,\n\t\tonTooltip: FALSE,\n\t\tlastClass: ''\n\t};\n\n\t// Set the initial flags\n\tthis.rendered = this.destroyed = this.disabled = this.waiting =\n\t\tthis.hiddenDuringWait = this.positioning = this.triggering = FALSE;\n}\nPROTOTYPE = QTip.prototype;\n\nPROTOTYPE._when = function(deferreds) {\n\treturn $.when.apply($, deferreds);\n};\n\nPROTOTYPE.render = function(show) {\n\tif(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit\n\n\tvar self = this,\n\t\toptions = this.options,\n\t\tcache = this.cache,\n\t\telements = this.elements,\n\t\ttext = options.content.text,\n\t\ttitle = options.content.title,\n\t\tbutton = options.content.button,\n\t\tposOptions = options.position,\n\t\tdeferreds = [];\n\n\t// Add ARIA attributes to target\n\t$.attr(this.target[0], 'aria-describedby', this._id);\n\n\t// Create public position object that tracks current position corners\n\tcache.posClass = this._createPosClass(\n\t\t(this.position = { my: posOptions.my, at: posOptions.at }).my\n\t);\n\n\t// Create tooltip element\n\tthis.tooltip = elements.tooltip = $('
      ', {\n\t\t'id': this._id,\n\t\t'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '),\n\t\t'width': options.style.width || '',\n\t\t'height': options.style.height || '',\n\t\t'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,\n\n\t\t/* ARIA specific attributes */\n\t\t'role': 'alert',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': FALSE,\n\t\t'aria-describedby': this._id + '-content',\n\t\t'aria-hidden': TRUE\n\t})\n\t.toggleClass(CLASS_DISABLED, this.disabled)\n\t.attr(ATTR_ID, this.id)\n\t.data(NAMESPACE, this)\n\t.appendTo(posOptions.container)\n\t.append(\n\t\t// Create content element\n\t\telements.content = $('
      ', {\n\t\t\t'class': NAMESPACE + '-content',\n\t\t\t'id': this._id + '-content',\n\t\t\t'aria-atomic': TRUE\n\t\t})\n\t);\n\n\t// Set rendered flag and prevent redundant reposition calls for now\n\tthis.rendered = -1;\n\tthis.positioning = TRUE;\n\n\t// Create title...\n\tif(title) {\n\t\tthis._createTitle();\n\n\t\t// Update title only if its not a callback (called in toggle if so)\n\t\tif(!$.isFunction(title)) {\n\t\t\tdeferreds.push( this._updateTitle(title, FALSE) );\n\t\t}\n\t}\n\n\t// Create button\n\tif(button) { this._createButton(); }\n\n\t// Set proper rendered flag and update content if not a callback function (called in toggle)\n\tif(!$.isFunction(text)) {\n\t\tdeferreds.push( this._updateContent(text, FALSE) );\n\t}\n\tthis.rendered = TRUE;\n\n\t// Setup widget classes\n\tthis._setWidget();\n\n\t// Initialize 'render' plugins\n\t$.each(PLUGINS, function(name) {\n\t\tvar instance;\n\t\tif(this.initialize === 'render' && (instance = this(self))) {\n\t\t\tself.plugins[name] = instance;\n\t\t}\n\t});\n\n\t// Unassign initial events and assign proper events\n\tthis._unassignEvents();\n\tthis._assignEvents();\n\n\t// When deferreds have completed\n\tthis._when(deferreds).then(function() {\n\t\t// tooltiprender event\n\t\tself._trigger('render');\n\n\t\t// Reset flags\n\t\tself.positioning = FALSE;\n\n\t\t// Show tooltip if not hidden during wait period\n\t\tif(!self.hiddenDuringWait && (options.show.ready || show)) {\n\t\t\tself.toggle(TRUE, cache.event, FALSE);\n\t\t}\n\t\tself.hiddenDuringWait = FALSE;\n\t});\n\n\t// Expose API\n\tQTIP.api[this.id] = this;\n\n\treturn this;\n};\n\nPROTOTYPE.destroy = function(immediate) {\n\t// Set flag the signify destroy is taking place to plugins\n\t// and ensure it only gets destroyed once!\n\tif(this.destroyed) { return this.target; }\n\n\tfunction process() {\n\t\tif(this.destroyed) { return; }\n\t\tthis.destroyed = TRUE;\n\n\t\tvar target = this.target,\n\t\t\ttitle = target.attr(oldtitle),\n\t\t\ttimer;\n\n\t\t// Destroy tooltip if rendered\n\t\tif(this.rendered) {\n\t\t\tthis.tooltip.stop(1,0).find('*').remove().end().remove();\n\t\t}\n\n\t\t// Destroy all plugins\n\t\t$.each(this.plugins, function() {\n\t\t\tthis.destroy && this.destroy();\n\t\t});\n\n\t\t// Clear timers\n\t\tfor (timer in this.timers) {\n\t\t\tif (this.timers.hasOwnProperty(timer)) {\n\t\t\t\tclearTimeout(this.timers[timer]);\n\t\t\t}\n\t\t}\n\n\t\t// Remove api object and ARIA attributes\n\t\ttarget.removeData(NAMESPACE)\n\t\t\t.removeAttr(ATTR_ID)\n\t\t\t.removeAttr(ATTR_HAS)\n\t\t\t.removeAttr('aria-describedby');\n\n\t\t// Reset old title attribute if removed\n\t\tif(this.options.suppress && title) {\n\t\t\ttarget.attr('title', title).removeAttr(oldtitle);\n\t\t}\n\n\t\t// Remove qTip events associated with this API\n\t\tthis._unassignEvents();\n\n\t\t// Remove ID from used id objects, and delete object references\n\t\t// for better garbage collection and leak protection\n\t\tthis.options = this.elements = this.cache = this.timers =\n\t\t\tthis.plugins = this.mouse = NULL;\n\n\t\t// Delete epoxsed API object\n\t\tdelete QTIP.api[this.id];\n\t}\n\n\t// If an immediate destroy is needed\n\tif((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {\n\t\tthis.tooltip.one('tooltiphidden', $.proxy(process, this));\n\t\t!this.triggering && this.hide();\n\t}\n\n\t// If we're not in the process of hiding... process\n\telse { process.call(this); }\n\n\treturn this.target;\n};\n;function invalidOpt(a) {\n\treturn a === NULL || $.type(a) !== 'object';\n}\n\nfunction invalidContent(c) {\n\treturn !($.isFunction(c) || \n c && c.attr || \n c.length || \n $.type(c) === 'object' && (c.jquery || c.then));\n}\n\n// Option object sanitizer\nfunction sanitizeOptions(opts) {\n\tvar content, text, ajax, once;\n\n\tif(invalidOpt(opts)) { return FALSE; }\n\n\tif(invalidOpt(opts.metadata)) {\n\t\topts.metadata = { type: opts.metadata };\n\t}\n\n\tif('content' in opts) {\n\t\tcontent = opts.content;\n\n\t\tif(invalidOpt(content) || content.jquery || content.done) {\n\t\t\ttext = invalidContent(content) ? FALSE : content;\n\t\t\tcontent = opts.content = {\n\t\t\t\ttext: text\n\t\t\t};\n\t\t}\n\t\telse { text = content.text; }\n\n\t\t// DEPRECATED - Old content.ajax plugin functionality\n\t\t// Converts it into the proper Deferred syntax\n\t\tif('ajax' in content) {\n\t\t\tajax = content.ajax;\n\t\t\tonce = ajax && ajax.once !== FALSE;\n\t\t\tdelete content.ajax;\n\n\t\t\tcontent.text = function(event, api) {\n\t\t\t\tvar loading = text || $(this).attr(api.options.content.attr) || 'Loading...',\n\n\t\t\t\tdeferred = $.ajax(\n\t\t\t\t\t$.extend({}, ajax, { context: api })\n\t\t\t\t)\n\t\t\t\t.then(ajax.success, NULL, ajax.error)\n\t\t\t\t.then(function(newContent) {\n\t\t\t\t\tif(newContent && once) { api.set('content.text', newContent); }\n\t\t\t\t\treturn newContent;\n\t\t\t\t},\n\t\t\t\tfunction(xhr, status, error) {\n\t\t\t\t\tif(api.destroyed || xhr.status === 0) { return; }\n\t\t\t\t\tapi.set('content.text', status + ': ' + error);\n\t\t\t\t});\n\n\t\t\t\treturn !once ? (api.set('content.text', loading), deferred) : loading;\n\t\t\t};\n\t\t}\n\n\t\tif('title' in content) {\n\t\t\tif($.isPlainObject(content.title)) {\n\t\t\t\tcontent.button = content.title.button;\n\t\t\t\tcontent.title = content.title.text;\n\t\t\t}\n\n\t\t\tif(invalidContent(content.title || FALSE)) {\n\t\t\t\tcontent.title = FALSE;\n\t\t\t}\n\t\t}\n\t}\n\n\tif('position' in opts && invalidOpt(opts.position)) {\n\t\topts.position = { my: opts.position, at: opts.position };\n\t}\n\n\tif('show' in opts && invalidOpt(opts.show)) {\n\t\topts.show = opts.show.jquery ? { target: opts.show } :\n\t\t\topts.show === TRUE ? { ready: TRUE } : { event: opts.show };\n\t}\n\n\tif('hide' in opts && invalidOpt(opts.hide)) {\n\t\topts.hide = opts.hide.jquery ? { target: opts.hide } : { event: opts.hide };\n\t}\n\n\tif('style' in opts && invalidOpt(opts.style)) {\n\t\topts.style = { classes: opts.style };\n\t}\n\n\t// Sanitize plugin options\n\t$.each(PLUGINS, function() {\n\t\tthis.sanitize && this.sanitize(opts);\n\t});\n\n\treturn opts;\n}\n\n// Setup builtin .set() option checks\nCHECKS = PROTOTYPE.checks = {\n\tbuiltin: {\n\t\t// Core checks\n\t\t'^id$': function(obj, o, v, prev) {\n\t\t\tvar id = v === TRUE ? QTIP.nextid : v,\n\t\t\t\tnewId = NAMESPACE + '-' + id;\n\n\t\t\tif(id !== FALSE && id.length > 0 && !$('#'+newId).length) {\n\t\t\t\tthis._id = newId;\n\n\t\t\t\tif(this.rendered) {\n\t\t\t\t\tthis.tooltip[0].id = this._id;\n\t\t\t\t\tthis.elements.content[0].id = this._id + '-content';\n\t\t\t\t\tthis.elements.title[0].id = this._id + '-title';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse { obj[o] = prev; }\n\t\t},\n\t\t'^prerender': function(obj, o, v) {\n\t\t\tv && !this.rendered && this.render(this.options.show.ready);\n\t\t},\n\n\t\t// Content checks\n\t\t'^content.text$': function(obj, o, v) {\n\t\t\tthis._updateContent(v);\n\t\t},\n\t\t'^content.attr$': function(obj, o, v, prev) {\n\t\t\tif(this.options.content.text === this.target.attr(prev)) {\n\t\t\t\tthis._updateContent( this.target.attr(v) );\n\t\t\t}\n\t\t},\n\t\t'^content.title$': function(obj, o, v) {\n\t\t\t// Remove title if content is null\n\t\t\tif(!v) { return this._removeTitle(); }\n\n\t\t\t// If title isn't already created, create it now and update\n\t\t\tv && !this.elements.title && this._createTitle();\n\t\t\tthis._updateTitle(v);\n\t\t},\n\t\t'^content.button$': function(obj, o, v) {\n\t\t\tthis._updateButton(v);\n\t\t},\n\t\t'^content.title.(text|button)$': function(obj, o, v) {\n\t\t\tthis.set('content.'+o, v); // Backwards title.text/button compat\n\t\t},\n\n\t\t// Position checks\n\t\t'^position.(my|at)$': function(obj, o, v){\n\t\t\tif('string' === typeof v) {\n\t\t\t\tthis.position[o] = obj[o] = new CORNER(v, o === 'at');\n\t\t\t}\n\t\t},\n\t\t'^position.container$': function(obj, o, v){\n\t\t\tthis.rendered && this.tooltip.appendTo(v);\n\t\t},\n\n\t\t// Show checks\n\t\t'^show.ready$': function(obj, o, v) {\n\t\t\tv && (!this.rendered && this.render(TRUE) || this.toggle(TRUE));\n\t\t},\n\n\t\t// Style checks\n\t\t'^style.classes$': function(obj, o, v, p) {\n\t\t\tthis.rendered && this.tooltip.removeClass(p).addClass(v);\n\t\t},\n\t\t'^style.(width|height)': function(obj, o, v) {\n\t\t\tthis.rendered && this.tooltip.css(o, v);\n\t\t},\n\t\t'^style.widget|content.title': function() {\n\t\t\tthis.rendered && this._setWidget();\n\t\t},\n\t\t'^style.def': function(obj, o, v) {\n\t\t\tthis.rendered && this.tooltip.toggleClass(CLASS_DEFAULT, !!v);\n\t\t},\n\n\t\t// Events check\n\t\t'^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) {\n\t\t\tthis.rendered && this.tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v);\n\t\t},\n\n\t\t// Properties which require event reassignment\n\t\t'^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() {\n\t\t\tif(!this.rendered) { return; }\n\n\t\t\t// Set tracking flag\n\t\t\tvar posOptions = this.options.position;\n\t\t\tthis.tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse);\n\n\t\t\t// Reassign events\n\t\t\tthis._unassignEvents();\n\t\t\tthis._assignEvents();\n\t\t}\n\t}\n};\n\n// Dot notation converter\nfunction convertNotation(options, notation) {\n\tvar i = 0, obj, option = options,\n\n\t// Split notation into array\n\tlevels = notation.split('.');\n\n\t// Loop through\n\twhile(option = option[ levels[i++] ]) {\n\t\tif(i < levels.length) { obj = option; }\n\t}\n\n\treturn [obj || options, levels.pop()];\n}\n\nPROTOTYPE.get = function(notation) {\n\tif(this.destroyed) { return this; }\n\n\tvar o = convertNotation(this.options, notation.toLowerCase()),\n\t\tresult = o[0][ o[1] ];\n\n\treturn result.precedance ? result.string() : result;\n};\n\nfunction setCallback(notation, args) {\n\tvar category, rule, match;\n\n\tfor(category in this.checks) {\n\t\tif (!this.checks.hasOwnProperty(category)) { continue; }\n\n\t\tfor(rule in this.checks[category]) {\n\t\t\tif (!this.checks[category].hasOwnProperty(rule)) { continue; }\n\n\t\t\tif(match = (new RegExp(rule, 'i')).exec(notation)) {\n\t\t\t\targs.push(match);\n\n\t\t\t\tif(category === 'builtin' || this.plugins[category]) {\n\t\t\t\t\tthis.checks[category][rule].apply(\n\t\t\t\t\t\tthis.plugins[category] || this, args\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar rmove = /^position\\.(my|at|adjust|target|container|viewport)|style|content|show\\.ready/i,\n\trrender = /^prerender|show\\.ready/i;\n\nPROTOTYPE.set = function(option, value) {\n\tif(this.destroyed) { return this; }\n\n\tvar rendered = this.rendered,\n\t\treposition = FALSE,\n\t\toptions = this.options,\n\t\tname;\n\n\t// Convert singular option/value pair into object form\n\tif('string' === typeof option) {\n\t\tname = option; option = {}; option[name] = value;\n\t}\n\telse { option = $.extend({}, option); }\n\n\t// Set all of the defined options to their new values\n\t$.each(option, function(notation, val) {\n\t\tif(rendered && rrender.test(notation)) {\n\t\t\tdelete option[notation]; return;\n\t\t}\n\n\t\t// Set new obj value\n\t\tvar obj = convertNotation(options, notation.toLowerCase()), previous;\n\t\tprevious = obj[0][ obj[1] ];\n\t\tobj[0][ obj[1] ] = val && val.nodeType ? $(val) : val;\n\n\t\t// Also check if we need to reposition\n\t\treposition = rmove.test(notation) || reposition;\n\n\t\t// Set the new params for the callback\n\t\toption[notation] = [obj[0], obj[1], val, previous];\n\t});\n\n\t// Re-sanitize options\n\tsanitizeOptions(options);\n\n\t/*\n\t * Execute any valid callbacks for the set options\n\t * Also set positioning flag so we don't get loads of redundant repositioning calls.\n\t */\n\tthis.positioning = TRUE;\n\t$.each(option, $.proxy(setCallback, this));\n\tthis.positioning = FALSE;\n\n\t// Update position if needed\n\tif(this.rendered && this.tooltip[0].offsetWidth > 0 && reposition) {\n\t\tthis.reposition( options.position.target === 'mouse' ? NULL : this.cache.event );\n\t}\n\n\treturn this;\n};\n;PROTOTYPE._update = function(content, element) {\n\tvar self = this,\n\t\tcache = this.cache;\n\n\t// Make sure tooltip is rendered and content is defined. If not return\n\tif(!this.rendered || !content) { return FALSE; }\n\n\t// Use function to parse content\n\tif($.isFunction(content)) {\n\t\tcontent = content.call(this.elements.target, cache.event, this) || '';\n\t}\n\n\t// Handle deferred content\n\tif($.isFunction(content.then)) {\n\t\tcache.waiting = TRUE;\n\t\treturn content.then(function(c) {\n\t\t\tcache.waiting = FALSE;\n\t\t\treturn self._update(c, element);\n\t\t}, NULL, function(e) {\n\t\t\treturn self._update(e, element);\n\t\t});\n\t}\n\n\t// If content is null... return false\n\tif(content === FALSE || !content && content !== '') { return FALSE; }\n\n\t// Append new content if its a DOM array and show it if hidden\n\tif(content.jquery && content.length > 0) {\n\t\telement.empty().append(\n\t\t\tcontent.css({ display: 'block', visibility: 'visible' })\n\t\t);\n\t}\n\n\t// Content is a regular string, insert the new content\n\telse { element.html(content); }\n\n\t// Wait for content to be loaded, and reposition\n\treturn this._waitForContent(element).then(function(images) {\n\t\tif(self.rendered && self.tooltip[0].offsetWidth > 0) {\n\t\t\tself.reposition(cache.event, !images.length);\n\t\t}\n\t});\n};\n\nPROTOTYPE._waitForContent = function(element) {\n\tvar cache = this.cache;\n\n\t// Set flag\n\tcache.waiting = TRUE;\n\n\t// If imagesLoaded is included, ensure images have loaded and return promise\n\treturn ( $.fn.imagesLoaded ? element.imagesLoaded() : new $.Deferred().resolve([]) )\n\t\t.done(function() { cache.waiting = FALSE; })\n\t\t.promise();\n};\n\nPROTOTYPE._updateContent = function(content, reposition) {\n\tthis._update(content, this.elements.content, reposition);\n};\n\nPROTOTYPE._updateTitle = function(content, reposition) {\n\tif(this._update(content, this.elements.title, reposition) === FALSE) {\n\t\tthis._removeTitle(FALSE);\n\t}\n};\n\nPROTOTYPE._createTitle = function()\n{\n\tvar elements = this.elements,\n\t\tid = this._id+'-title';\n\n\t// Destroy previous title element, if present\n\tif(elements.titlebar) { this._removeTitle(); }\n\n\t// Create title bar and title elements\n\telements.titlebar = $('
      ', {\n\t\t'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass('header') : '')\n\t})\n\t.append(\n\t\telements.title = $('
      ', {\n\t\t\t'id': id,\n\t\t\t'class': NAMESPACE + '-title',\n\t\t\t'aria-atomic': TRUE\n\t\t})\n\t)\n\t.insertBefore(elements.content)\n\n\t// Button-specific events\n\t.delegate('.qtip-close', 'mousedown keydown mouseup keyup mouseout', function(event) {\n\t\t$(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down');\n\t})\n\t.delegate('.qtip-close', 'mouseover mouseout', function(event){\n\t\t$(this).toggleClass('ui-state-hover', event.type === 'mouseover');\n\t});\n\n\t// Create button if enabled\n\tif(this.options.content.button) { this._createButton(); }\n};\n\nPROTOTYPE._removeTitle = function(reposition)\n{\n\tvar elements = this.elements;\n\n\tif(elements.title) {\n\t\telements.titlebar.remove();\n\t\telements.titlebar = elements.title = elements.button = NULL;\n\n\t\t// Reposition if enabled\n\t\tif(reposition !== FALSE) { this.reposition(); }\n\t}\n};\n;PROTOTYPE._createPosClass = function(my) {\n\treturn NAMESPACE + '-pos-' + (my || this.options.position.my).abbrev();\n};\n\nPROTOTYPE.reposition = function(event, effect) {\n\tif(!this.rendered || this.positioning || this.destroyed) { return this; }\n\n\t// Set positioning flag\n\tthis.positioning = TRUE;\n\n\tvar cache = this.cache,\n\t\ttooltip = this.tooltip,\n\t\tposOptions = this.options.position,\n\t\ttarget = posOptions.target,\n\t\tmy = posOptions.my,\n\t\tat = posOptions.at,\n\t\tviewport = posOptions.viewport,\n\t\tcontainer = posOptions.container,\n\t\tadjust = posOptions.adjust,\n\t\tmethod = adjust.method.split(' '),\n\t\ttooltipWidth = tooltip.outerWidth(FALSE),\n\t\ttooltipHeight = tooltip.outerHeight(FALSE),\n\t\ttargetWidth = 0,\n\t\ttargetHeight = 0,\n\t\ttype = tooltip.css('position'),\n\t\tposition = { left: 0, top: 0 },\n\t\tvisible = tooltip[0].offsetWidth > 0,\n\t\tisScroll = event && event.type === 'scroll',\n\t\twin = $(window),\n\t\tdoc = container[0].ownerDocument,\n\t\tmouse = this.mouse,\n\t\tpluginCalculations, offset, adjusted, newClass;\n\n\t// Check if absolute position was passed\n\tif($.isArray(target) && target.length === 2) {\n\t\t// Force left top and set position\n\t\tat = { x: LEFT, y: TOP };\n\t\tposition = { left: target[0], top: target[1] };\n\t}\n\n\t// Check if mouse was the target\n\telse if(target === 'mouse') {\n\t\t// Force left top to allow flipping\n\t\tat = { x: LEFT, y: TOP };\n\n\t\t// Use the mouse origin that caused the show event, if distance hiding is enabled\n\t\tif((!adjust.mouse || this.options.hide.distance) && cache.origin && cache.origin.pageX) {\n\t\t\tevent = cache.origin;\n\t\t}\n\n\t\t// Use cached event for resize/scroll events\n\t\telse if(!event || event && (event.type === 'resize' || event.type === 'scroll')) {\n\t\t\tevent = cache.event;\n\t\t}\n\n\t\t// Otherwise, use the cached mouse coordinates if available\n\t\telse if(mouse && mouse.pageX) {\n\t\t\tevent = mouse;\n\t\t}\n\n\t\t// Calculate body and container offset and take them into account below\n\t\tif(type !== 'static') { position = container.offset(); }\n\t\tif(doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth)) {\n\t\t\toffset = $(document.body).offset();\n\t\t}\n\n\t\t// Use event coordinates for position\n\t\tposition = {\n\t\t\tleft: event.pageX - position.left + (offset && offset.left || 0),\n\t\t\ttop: event.pageY - position.top + (offset && offset.top || 0)\n\t\t};\n\n\t\t// Scroll events are a pain, some browsers\n\t\tif(adjust.mouse && isScroll && mouse) {\n\t\t\tposition.left -= (mouse.scrollX || 0) - win.scrollLeft();\n\t\t\tposition.top -= (mouse.scrollY || 0) - win.scrollTop();\n\t\t}\n\t}\n\n\t// Target wasn't mouse or absolute...\n\telse {\n\t\t// Check if event targetting is being used\n\t\tif(target === 'event') {\n\t\t\tif(event && event.target && event.type !== 'scroll' && event.type !== 'resize') {\n\t\t\t\tcache.target = $(event.target);\n\t\t\t}\n\t\t\telse if(!event.target) {\n\t\t\t\tcache.target = this.elements.target;\n\t\t\t}\n\t\t}\n\t\telse if(target !== 'event'){\n\t\t\tcache.target = $(target.jquery ? target : this.elements.target);\n\t\t}\n\t\ttarget = cache.target;\n\n\t\t// Parse the target into a jQuery object and make sure there's an element present\n\t\ttarget = $(target).eq(0);\n\t\tif(target.length === 0) { return this; }\n\n\t\t// Check if window or document is the target\n\t\telse if(target[0] === document || target[0] === window) {\n\t\t\ttargetWidth = BROWSER.iOS ? window.innerWidth : target.width();\n\t\t\ttargetHeight = BROWSER.iOS ? window.innerHeight : target.height();\n\n\t\t\tif(target[0] === window) {\n\t\t\t\tposition = {\n\t\t\t\t\ttop: (viewport || target).scrollTop(),\n\t\t\t\t\tleft: (viewport || target).scrollLeft()\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check if the target is an element\n\t\telse if(PLUGINS.imagemap && target.is('area')) {\n\t\t\tpluginCalculations = PLUGINS.imagemap(this, target, at, PLUGINS.viewport ? method : FALSE);\n\t\t}\n\n\t\t// Check if the target is an SVG element\n\t\telse if(PLUGINS.svg && target && target[0].ownerSVGElement) {\n\t\t\tpluginCalculations = PLUGINS.svg(this, target, at, PLUGINS.viewport ? method : FALSE);\n\t\t}\n\n\t\t// Otherwise use regular jQuery methods\n\t\telse {\n\t\t\ttargetWidth = target.outerWidth(FALSE);\n\t\t\ttargetHeight = target.outerHeight(FALSE);\n\t\t\tposition = target.offset();\n\t\t}\n\n\t\t// Parse returned plugin values into proper variables\n\t\tif(pluginCalculations) {\n\t\t\ttargetWidth = pluginCalculations.width;\n\t\t\ttargetHeight = pluginCalculations.height;\n\t\t\toffset = pluginCalculations.offset;\n\t\t\tposition = pluginCalculations.position;\n\t\t}\n\n\t\t// Adjust position to take into account offset parents\n\t\tposition = this.reposition.offset(target, position, container);\n\n\t\t// Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2)\n\t\tif(BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1 ||\n\t\t\tBROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33 ||\n\t\t\t!BROWSER.iOS && type === 'fixed'\n\t\t){\n\t\t\tposition.left -= win.scrollLeft();\n\t\t\tposition.top -= win.scrollTop();\n\t\t}\n\n\t\t// Adjust position relative to target\n\t\tif(!pluginCalculations || pluginCalculations && pluginCalculations.adjustable !== FALSE) {\n\t\t\tposition.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0;\n\t\t\tposition.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0;\n\t\t}\n\t}\n\n\t// Adjust position relative to tooltip\n\tposition.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0);\n\tposition.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0);\n\n\t// Use viewport adjustment plugin if enabled\n\tif(PLUGINS.viewport) {\n\t\tadjusted = position.adjusted = PLUGINS.viewport(\n\t\t\tthis, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight\n\t\t);\n\n\t\t// Apply offsets supplied by positioning plugin (if used)\n\t\tif(offset && adjusted.left) { position.left += offset.left; }\n\t\tif(offset && adjusted.top) { position.top += offset.top; }\n\n\t\t// Apply any new 'my' position\n\t\tif(adjusted.my) { this.position.my = adjusted.my; }\n\t}\n\n\t// Viewport adjustment is disabled, set values to zero\n\telse { position.adjusted = { left: 0, top: 0 }; }\n\n\t// Set tooltip position class if it's changed\n\tif(cache.posClass !== (newClass = this._createPosClass(this.position.my))) {\n\t\tcache.posClass = newClass;\n\t\ttooltip.removeClass(cache.posClass).addClass(newClass);\n\t}\n\n\t// tooltipmove event\n\tif(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; }\n\tdelete position.adjusted;\n\n\t// If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly\n\tif(effect === FALSE || !visible || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) {\n\t\ttooltip.css(position);\n\t}\n\n\t// Use custom function if provided\n\telse if($.isFunction(posOptions.effect)) {\n\t\tposOptions.effect.call(tooltip, this, $.extend({}, position));\n\t\ttooltip.queue(function(next) {\n\t\t\t// Reset attributes to avoid cross-browser rendering bugs\n\t\t\t$(this).css({ opacity: '', height: '' });\n\t\t\tif(BROWSER.ie) { this.style.removeAttribute('filter'); }\n\n\t\t\tnext();\n\t\t});\n\t}\n\n\t// Set positioning flag\n\tthis.positioning = FALSE;\n\n\treturn this;\n};\n\n// Custom (more correct for qTip!) offset calculator\nPROTOTYPE.reposition.offset = function(elem, pos, container) {\n\tif(!container[0]) { return pos; }\n\n\tvar ownerDocument = $(elem[0].ownerDocument),\n\t\tquirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat',\n\t\tparent = container[0],\n\t\tscrolled, position, parentOffset, overflow;\n\n\tfunction scroll(e, i) {\n\t\tpos.left += i * e.scrollLeft();\n\t\tpos.top += i * e.scrollTop();\n\t}\n\n\t// Compensate for non-static containers offset\n\tdo {\n\t\tif((position = $.css(parent, 'position')) !== 'static') {\n\t\t\tif(position === 'fixed') {\n\t\t\t\tparentOffset = parent.getBoundingClientRect();\n\t\t\t\tscroll(ownerDocument, -1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparentOffset = $(parent).position();\n\t\t\t\tparentOffset.left += parseFloat($.css(parent, 'borderLeftWidth')) || 0;\n\t\t\t\tparentOffset.top += parseFloat($.css(parent, 'borderTopWidth')) || 0;\n\t\t\t}\n\n\t\t\tpos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0);\n\t\t\tpos.top -= parentOffset.top + (parseFloat($.css(parent, 'marginTop')) || 0);\n\n\t\t\t// If this is the first parent element with an overflow of \"scroll\" or \"auto\", store it\n\t\t\tif(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible' && $.prop(parent, 'tagName') !== 'BODY') { scrolled = $(parent); }\n\t\t}\n\t}\n\twhile(parent = parent.offsetParent);\n\n\t// Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode)\n\tif(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) {\n\t\tscroll(scrolled, 1);\n\t}\n\n\treturn pos;\n};\n\n// Corner class\nvar C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) {\n\tcorner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, CENTER).toLowerCase();\n\tthis.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase();\n\tthis.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase();\n\tthis.forceY = !!forceY;\n\n\tvar f = corner.charAt(0);\n\tthis.precedance = f === 't' || f === 'b' ? Y : X;\n}).prototype;\n\nC.invert = function(z, center) {\n\tthis[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z];\n};\n\nC.string = function(join) {\n\tvar x = this.x, y = this.y;\n\n\tvar result = x !== y ?\n\t\tx === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ? \n\t\t\t[y,x] : \n\t\t\t[x,y] :\n\t\t[x];\n\n\treturn join !== false ? result.join(' ') : result;\n};\n\nC.abbrev = function() {\n\tvar result = this.string(false);\n\treturn result[0].charAt(0) + (result[1] && result[1].charAt(0) || '');\n};\n\nC.clone = function() {\n\treturn new CORNER( this.string(), this.forceY );\n};\n\n;\nPROTOTYPE.toggle = function(state, event) {\n\tvar cache = this.cache,\n\t\toptions = this.options,\n\t\ttooltip = this.tooltip;\n\n\t// Try to prevent flickering when tooltip overlaps show element\n\tif(event) {\n\t\tif((/over|enter/).test(event.type) && cache.event && (/out|leave/).test(cache.event.type) &&\n\t\t\toptions.show.target.add(event.target).length === options.show.target.length &&\n\t\t\ttooltip.has(event.relatedTarget).length) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Cache event\n\t\tcache.event = $.event.fix(event);\n\t}\n\n\t// If we're currently waiting and we've just hidden... stop it\n\tthis.waiting && !state && (this.hiddenDuringWait = TRUE);\n\n\t// Render the tooltip if showing and it isn't already\n\tif(!this.rendered) { return state ? this.render(1) : this; }\n\telse if(this.destroyed || this.disabled) { return this; }\n\n\tvar type = state ? 'show' : 'hide',\n\t\topts = this.options[type],\n\t\tposOptions = this.options.position,\n\t\tcontentOptions = this.options.content,\n\t\twidth = this.tooltip.css('width'),\n\t\tvisible = this.tooltip.is(':visible'),\n\t\tanimate = state || opts.target.length === 1,\n\t\tsameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target,\n\t\tidenticalState, allow, after;\n\n\t// Detect state if valid one isn't provided\n\tif((typeof state).search('boolean|number')) { state = !visible; }\n\n\t// Check if the tooltip is in an identical state to the new would-be state\n\tidenticalState = !tooltip.is(':animated') && visible === state && sameTarget;\n\n\t// Fire tooltip(show/hide) event and check if destroyed\n\tallow = !identicalState ? !!this._trigger(type, [90]) : NULL;\n\n\t// Check to make sure the tooltip wasn't destroyed in the callback\n\tif(this.destroyed) { return this; }\n\n\t// If the user didn't stop the method prematurely and we're showing the tooltip, focus it\n\tif(allow !== FALSE && state) { this.focus(event); }\n\n\t// If the state hasn't changed or the user stopped it, return early\n\tif(!allow || identicalState) { return this; }\n\n\t// Set ARIA hidden attribute\n\t$.attr(tooltip[0], 'aria-hidden', !!!state);\n\n\t// Execute state specific properties\n\tif(state) {\n\t\t// Store show origin coordinates\n\t\tthis.mouse && (cache.origin = $.event.fix(this.mouse));\n\n\t\t// Update tooltip content & title if it's a dynamic function\n\t\tif($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); }\n\t\tif($.isFunction(contentOptions.title)) { this._updateTitle(contentOptions.title, FALSE); }\n\n\t\t// Cache mousemove events for positioning purposes (if not already tracking)\n\t\tif(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) {\n\t\t\t$(document).bind('mousemove.'+NAMESPACE, this._storeMouse);\n\t\t\ttrackingBound = TRUE;\n\t\t}\n\n\t\t// Update the tooltip position (set width first to prevent viewport/max-width issues)\n\t\tif(!width) { tooltip.css('width', tooltip.outerWidth(FALSE)); }\n\t\tthis.reposition(event, arguments[2]);\n\t\tif(!width) { tooltip.css('width', ''); }\n\n\t\t// Hide other tooltips if tooltip is solo\n\t\tif(!!opts.solo) {\n\t\t\t(typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo))\n\t\t\t\t.not(tooltip).not(opts.target).qtip('hide', new $.Event('tooltipsolo'));\n\t\t}\n\t}\n\telse {\n\t\t// Clear show timer if we're hiding\n\t\tclearTimeout(this.timers.show);\n\n\t\t// Remove cached origin on hide\n\t\tdelete cache.origin;\n\n\t\t// Remove mouse tracking event if not needed (all tracking qTips are hidden)\n\t\tif(trackingBound && !$(SELECTOR+'[tracking=\"true\"]:visible', opts.solo).not(tooltip).length) {\n\t\t\t$(document).unbind('mousemove.'+NAMESPACE);\n\t\t\ttrackingBound = FALSE;\n\t\t}\n\n\t\t// Blur the tooltip\n\t\tthis.blur(event);\n\t}\n\n\t// Define post-animation, state specific properties\n\tafter = $.proxy(function() {\n\t\tif(state) {\n\t\t\t// Prevent antialias from disappearing in IE by removing filter\n\t\t\tif(BROWSER.ie) { tooltip[0].style.removeAttribute('filter'); }\n\n\t\t\t// Remove overflow setting to prevent tip bugs\n\t\t\ttooltip.css('overflow', '');\n\n\t\t\t// Autofocus elements if enabled\n\t\t\tif('string' === typeof opts.autofocus) {\n\t\t\t\t$(this.options.show.autofocus, tooltip).focus();\n\t\t\t}\n\n\t\t\t// If set, hide tooltip when inactive for delay period\n\t\t\tthis.options.show.target.trigger('qtip-'+this.id+'-inactive');\n\t\t}\n\t\telse {\n\t\t\t// Reset CSS states\n\t\t\ttooltip.css({\n\t\t\t\tdisplay: '',\n\t\t\t\tvisibility: '',\n\t\t\t\topacity: '',\n\t\t\t\tleft: '',\n\t\t\t\ttop: ''\n\t\t\t});\n\t\t}\n\n\t\t// tooltipvisible/tooltiphidden events\n\t\tthis._trigger(state ? 'visible' : 'hidden');\n\t}, this);\n\n\t// If no effect type is supplied, use a simple toggle\n\tif(opts.effect === FALSE || animate === FALSE) {\n\t\ttooltip[ type ]();\n\t\tafter();\n\t}\n\n\t// Use custom function if provided\n\telse if($.isFunction(opts.effect)) {\n\t\ttooltip.stop(1, 1);\n\t\topts.effect.call(tooltip, this);\n\t\ttooltip.queue('fx', function(n) {\n\t\t\tafter(); n();\n\t\t});\n\t}\n\n\t// Use basic fade function by default\n\telse { tooltip.fadeTo(90, state ? 1 : 0, after); }\n\n\t// If inactive hide method is set, active it\n\tif(state) { opts.target.trigger('qtip-'+this.id+'-inactive'); }\n\n\treturn this;\n};\n\nPROTOTYPE.show = function(event) { return this.toggle(TRUE, event); };\n\nPROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };\n;PROTOTYPE.focus = function(event) {\n\tif(!this.rendered || this.destroyed) { return this; }\n\n\tvar qtips = $(SELECTOR),\n\t\ttooltip = this.tooltip,\n\t\tcurIndex = parseInt(tooltip[0].style.zIndex, 10),\n\t\tnewIndex = QTIP.zindex + qtips.length;\n\n\t// Only update the z-index if it has changed and tooltip is not already focused\n\tif(!tooltip.hasClass(CLASS_FOCUS)) {\n\t\t// tooltipfocus event\n\t\tif(this._trigger('focus', [newIndex], event)) {\n\t\t\t// Only update z-index's if they've changed\n\t\t\tif(curIndex !== newIndex) {\n\t\t\t\t// Reduce our z-index's and keep them properly ordered\n\t\t\t\tqtips.each(function() {\n\t\t\t\t\tif(this.style.zIndex > curIndex) {\n\t\t\t\t\t\tthis.style.zIndex = this.style.zIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Fire blur event for focused tooltip\n\t\t\t\tqtips.filter('.' + CLASS_FOCUS).qtip('blur', event);\n\t\t\t}\n\n\t\t\t// Set the new z-index\n\t\t\ttooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;\n\t\t}\n\t}\n\n\treturn this;\n};\n\nPROTOTYPE.blur = function(event) {\n\tif(!this.rendered || this.destroyed) { return this; }\n\n\t// Set focused status to FALSE\n\tthis.tooltip.removeClass(CLASS_FOCUS);\n\n\t// tooltipblur event\n\tthis._trigger('blur', [ this.tooltip.css('zIndex') ], event);\n\n\treturn this;\n};\n;PROTOTYPE.disable = function(state) {\n\tif(this.destroyed) { return this; }\n\n\t// If 'toggle' is passed, toggle the current state\n\tif(state === 'toggle') {\n\t\tstate = !(this.rendered ? this.tooltip.hasClass(CLASS_DISABLED) : this.disabled);\n\t}\n\n\t// Disable if no state passed\n\telse if('boolean' !== typeof state) {\n\t\tstate = TRUE;\n\t}\n\n\tif(this.rendered) {\n\t\tthis.tooltip.toggleClass(CLASS_DISABLED, state)\n\t\t\t.attr('aria-disabled', state);\n\t}\n\n\tthis.disabled = !!state;\n\n\treturn this;\n};\n\nPROTOTYPE.enable = function() { return this.disable(FALSE); };\n;PROTOTYPE._createButton = function()\n{\n\tvar self = this,\n\t\telements = this.elements,\n\t\ttooltip = elements.tooltip,\n\t\tbutton = this.options.content.button,\n\t\tisString = typeof button === 'string',\n\t\tclose = isString ? button : 'Close tooltip';\n\n\tif(elements.button) { elements.button.remove(); }\n\n\t// Use custom button if one was supplied by user, else use default\n\tif(button.jquery) {\n\t\telements.button = button;\n\t}\n\telse {\n\t\telements.button = $('', {\n\t\t\t'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE+'-icon'),\n\t\t\t'title': close,\n\t\t\t'aria-label': close\n\t\t})\n\t\t.prepend(\n\t\t\t$('', {\n\t\t\t\t'class': 'ui-icon ui-icon-close',\n\t\t\t\t'html': '×'\n\t\t\t})\n\t\t);\n\t}\n\n\t// Create button and setup attributes\n\telements.button.appendTo(elements.titlebar || tooltip)\n\t\t.attr('role', 'button')\n\t\t.click(function(event) {\n\t\t\tif(!tooltip.hasClass(CLASS_DISABLED)) { self.hide(event); }\n\t\t\treturn FALSE;\n\t\t});\n};\n\nPROTOTYPE._updateButton = function(button)\n{\n\t// Make sure tooltip is rendered and if not, return\n\tif(!this.rendered) { return FALSE; }\n\n\tvar elem = this.elements.button;\n\tif(button) { this._createButton(); }\n\telse { elem.remove(); }\n};\n;// Widget class creator\nfunction createWidgetClass(cls) {\n\treturn WIDGET.concat('').join(cls ? '-'+cls+' ' : ' ');\n}\n\n// Widget class setter method\nPROTOTYPE._setWidget = function()\n{\n\tvar on = this.options.style.widget,\n\t\telements = this.elements,\n\t\ttooltip = elements.tooltip,\n\t\tdisabled = tooltip.hasClass(CLASS_DISABLED);\n\n\ttooltip.removeClass(CLASS_DISABLED);\n\tCLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled';\n\ttooltip.toggleClass(CLASS_DISABLED, disabled);\n\n\ttooltip.toggleClass('ui-helper-reset '+createWidgetClass(), on).toggleClass(CLASS_DEFAULT, this.options.style.def && !on);\n\n\tif(elements.content) {\n\t\telements.content.toggleClass( createWidgetClass('content'), on);\n\t}\n\tif(elements.titlebar) {\n\t\telements.titlebar.toggleClass( createWidgetClass('header'), on);\n\t}\n\tif(elements.button) {\n\t\telements.button.toggleClass(NAMESPACE+'-icon', !on);\n\t}\n};\n;function delay(callback, duration) {\n\t// If tooltip has displayed, start hide timer\n\tif(duration > 0) {\n\t\treturn setTimeout(\n\t\t\t$.proxy(callback, this), duration\n\t\t);\n\t}\n\telse{ callback.call(this); }\n}\n\nfunction showMethod(event) {\n\tif(this.tooltip.hasClass(CLASS_DISABLED)) { return; }\n\n\t// Clear hide timers\n\tclearTimeout(this.timers.show);\n\tclearTimeout(this.timers.hide);\n\n\t// Start show timer\n\tthis.timers.show = delay.call(this,\n\t\tfunction() { this.toggle(TRUE, event); },\n\t\tthis.options.show.delay\n\t);\n}\n\nfunction hideMethod(event) {\n\tif(this.tooltip.hasClass(CLASS_DISABLED) || this.destroyed) { return; }\n\n\t// Check if new target was actually the tooltip element\n\tvar relatedTarget = $(event.relatedTarget),\n\t\tontoTooltip = relatedTarget.closest(SELECTOR)[0] === this.tooltip[0],\n\t\tontoTarget = relatedTarget[0] === this.options.show.target[0];\n\n\t// Clear timers and stop animation queue\n\tclearTimeout(this.timers.show);\n\tclearTimeout(this.timers.hide);\n\n\t// Prevent hiding if tooltip is fixed and event target is the tooltip.\n\t// Or if mouse positioning is enabled and cursor momentarily overlaps\n\tif(this !== relatedTarget[0] &&\n\t\t(this.options.position.target === 'mouse' && ontoTooltip) ||\n\t\tthis.options.hide.fixed && (\n\t\t\t(/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget))\n\t\t)\n\t{\n\t\t/* eslint-disable no-empty */\n\t\ttry {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t} catch(e) {}\n\t\t/* eslint-enable no-empty */\n\n\t\treturn;\n\t}\n\n\t// If tooltip has displayed, start hide timer\n\tthis.timers.hide = delay.call(this,\n\t\tfunction() { this.toggle(FALSE, event); },\n\t\tthis.options.hide.delay,\n\t\tthis\n\t);\n}\n\nfunction inactiveMethod(event) {\n\tif(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return; }\n\n\t// Clear timer\n\tclearTimeout(this.timers.inactive);\n\n\tthis.timers.inactive = delay.call(this,\n\t\tfunction(){ this.hide(event); },\n\t\tthis.options.hide.inactive\n\t);\n}\n\nfunction repositionMethod(event) {\n\tif(this.rendered && this.tooltip[0].offsetWidth > 0) { this.reposition(event); }\n}\n\n// Store mouse coordinates\nPROTOTYPE._storeMouse = function(event) {\n\t(this.mouse = $.event.fix(event)).type = 'mousemove';\n\treturn this;\n};\n\n// Bind events\nPROTOTYPE._bind = function(targets, events, method, suffix, context) {\n\tif(!targets || !method || !events.length) { return; }\n\tvar ns = '.' + this._id + (suffix ? '-'+suffix : '');\n\t$(targets).bind(\n\t\t(events.split ? events : events.join(ns + ' ')) + ns,\n\t\t$.proxy(method, context || this)\n\t);\n\treturn this;\n};\nPROTOTYPE._unbind = function(targets, suffix) {\n\ttargets && $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : ''));\n\treturn this;\n};\n\n// Global delegation helper\nfunction delegate(selector, events, method) {\n\t$(document.body).delegate(selector,\n\t\t(events.split ? events : events.join('.'+NAMESPACE + ' ')) + '.'+NAMESPACE,\n\t\tfunction() {\n\t\t\tvar api = QTIP.api[ $.attr(this, ATTR_ID) ];\n\t\t\tapi && !api.disabled && method.apply(api, arguments);\n\t\t}\n\t);\n}\n// Event trigger\nPROTOTYPE._trigger = function(type, args, event) {\n\tvar callback = new $.Event('tooltip'+type);\n\tcallback.originalEvent = event && $.extend({}, event) || this.cache.event || NULL;\n\n\tthis.triggering = type;\n\tthis.tooltip.trigger(callback, [this].concat(args || []));\n\tthis.triggering = FALSE;\n\n\treturn !callback.isDefaultPrevented();\n};\n\nPROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showCallback, hideCallback) {\n\t// Get tasrgets that lye within both\n\tvar similarTargets = showTargets.filter( hideTargets ).add( hideTargets.filter(showTargets) ),\n\t\ttoggleEvents = [];\n\n\t// If hide and show targets are the same...\n\tif(similarTargets.length) {\n\n\t\t// Filter identical show/hide events\n\t\t$.each(hideEvents, function(i, type) {\n\t\t\tvar showIndex = $.inArray(type, showEvents);\n\n\t\t\t// Both events are identical, remove from both hide and show events\n\t\t\t// and append to toggleEvents\n\t\t\tshowIndex > -1 && toggleEvents.push( showEvents.splice( showIndex, 1 )[0] );\n\t\t});\n\n\t\t// Toggle events are special case of identical show/hide events, which happen in sequence\n\t\tif(toggleEvents.length) {\n\t\t\t// Bind toggle events to the similar targets\n\t\t\tthis._bind(similarTargets, toggleEvents, function(event) {\n\t\t\t\tvar state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;\n\t\t\t\t(state ? hideCallback : showCallback).call(this, event);\n\t\t\t});\n\n\t\t\t// Remove the similar targets from the regular show/hide bindings\n\t\t\tshowTargets = showTargets.not(similarTargets);\n\t\t\thideTargets = hideTargets.not(similarTargets);\n\t\t}\n\t}\n\n\t// Apply show/hide/toggle events\n\tthis._bind(showTargets, showEvents, showCallback);\n\tthis._bind(hideTargets, hideEvents, hideCallback);\n};\n\nPROTOTYPE._assignInitialEvents = function(event) {\n\tvar options = this.options,\n\t\tshowTarget = options.show.target,\n\t\thideTarget = options.hide.target,\n\t\tshowEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],\n\t\thideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];\n\n\t// Catch remove/removeqtip events on target element to destroy redundant tooltips\n\tthis._bind(this.elements.target, ['remove', 'removeqtip'], function() {\n\t\tthis.destroy(true);\n\t}, 'destroy');\n\n\t/*\n\t * Make sure hoverIntent functions properly by using mouseleave as a hide event if\n\t * mouseenter/mouseout is used for show.event, even if it isn't in the users options.\n\t */\n\tif(/mouse(over|enter)/i.test(options.show.event) && !/mouse(out|leave)/i.test(options.hide.event)) {\n\t\thideEvents.push('mouseleave');\n\t}\n\n\t/*\n\t * Also make sure initial mouse targetting works correctly by caching mousemove coords\n\t * on show targets before the tooltip has rendered. Also set onTarget when triggered to\n\t * keep mouse tracking working.\n\t */\n\tthis._bind(showTarget, 'mousemove', function(moveEvent) {\n\t\tthis._storeMouse(moveEvent);\n\t\tthis.cache.onTarget = TRUE;\n\t});\n\n\t// Define hoverIntent function\n\tfunction hoverIntent(hoverEvent) {\n\t\t// Only continue if tooltip isn't disabled\n\t\tif(this.disabled || this.destroyed) { return FALSE; }\n\n\t\t// Cache the event data\n\t\tthis.cache.event = hoverEvent && $.event.fix(hoverEvent);\n\t\tthis.cache.target = hoverEvent && $(hoverEvent.target);\n\n\t\t// Start the event sequence\n\t\tclearTimeout(this.timers.show);\n\t\tthis.timers.show = delay.call(this,\n\t\t\tfunction() { this.render(typeof hoverEvent === 'object' || options.show.ready); },\n\t\t\toptions.prerender ? 0 : options.show.delay\n\t\t);\n\t}\n\n\t// Filter and bind events\n\tthis._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() {\n\t\tif(!this.timers) { return FALSE; }\n\t\tclearTimeout(this.timers.show);\n\t});\n\n\t// Prerendering is enabled, create tooltip now\n\tif(options.show.ready || options.prerender) { hoverIntent.call(this, event); }\n};\n\n// Event assignment method\nPROTOTYPE._assignEvents = function() {\n\tvar self = this,\n\t\toptions = this.options,\n\t\tposOptions = options.position,\n\n\t\ttooltip = this.tooltip,\n\t\tshowTarget = options.show.target,\n\t\thideTarget = options.hide.target,\n\t\tcontainerTarget = posOptions.container,\n\t\tviewportTarget = posOptions.viewport,\n\t\tdocumentTarget = $(document),\n\t\twindowTarget = $(window),\n\n\t\tshowEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],\n\t\thideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];\n\n\n\t// Assign passed event callbacks\n\t$.each(options.events, function(name, callback) {\n\t\tself._bind(tooltip, name === 'toggle' ? ['tooltipshow','tooltiphide'] : ['tooltip'+name], callback, null, tooltip);\n\t});\n\n\t// Hide tooltips when leaving current window/frame (but not select/option elements)\n\tif(/mouse(out|leave)/i.test(options.hide.event) && options.hide.leave === 'window') {\n\t\tthis._bind(documentTarget, ['mouseout', 'blur'], function(event) {\n\t\t\tif(!/select|option/.test(event.target.nodeName) && !event.relatedTarget) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Enable hide.fixed by adding appropriate class\n\tif(options.hide.fixed) {\n\t\thideTarget = hideTarget.add( tooltip.addClass(CLASS_FIXED) );\n\t}\n\n\t/*\n\t * Make sure hoverIntent functions properly by using mouseleave to clear show timer if\n\t * mouseenter/mouseout is used for show.event, even if it isn't in the users options.\n\t */\n\telse if(/mouse(over|enter)/i.test(options.show.event)) {\n\t\tthis._bind(hideTarget, 'mouseleave', function() {\n\t\t\tclearTimeout(this.timers.show);\n\t\t});\n\t}\n\n\t// Hide tooltip on document mousedown if unfocus events are enabled\n\tif(('' + options.hide.event).indexOf('unfocus') > -1) {\n\t\tthis._bind(containerTarget.closest('html'), ['mousedown', 'touchstart'], function(event) {\n\t\t\tvar elem = $(event.target),\n\t\t\t\tenabled = this.rendered && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0,\n\t\t\t\tisAncestor = elem.parents(SELECTOR).filter(this.tooltip[0]).length > 0;\n\n\t\t\tif(elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor &&\n\t\t\t\t!this.target.has(elem[0]).length && enabled\n\t\t\t) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Check if the tooltip hides when inactive\n\tif('number' === typeof options.hide.inactive) {\n\t\t// Bind inactive method to show target(s) as a custom event\n\t\tthis._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod, 'inactive');\n\n\t\t// Define events which reset the 'inactive' event handler\n\t\tthis._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod);\n\t}\n\n\t// Filter and bind events\n\tthis._bindEvents(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod);\n\n\t// Mouse movement bindings\n\tthis._bind(showTarget.add(tooltip), 'mousemove', function(event) {\n\t\t// Check if the tooltip hides when mouse is moved a certain distance\n\t\tif('number' === typeof options.hide.distance) {\n\t\t\tvar origin = this.cache.origin || {},\n\t\t\t\tlimit = this.options.hide.distance,\n\t\t\t\tabs = Math.abs;\n\n\t\t\t// Check if the movement has gone beyond the limit, and hide it if so\n\t\t\tif(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t}\n\n\t\t// Cache mousemove coords on show targets\n\t\tthis._storeMouse(event);\n\t});\n\n\t// Mouse positioning events\n\tif(posOptions.target === 'mouse') {\n\t\t// If mouse adjustment is on...\n\t\tif(posOptions.adjust.mouse) {\n\t\t\t// Apply a mouseleave event so we don't get problems with overlapping\n\t\t\tif(options.hide.event) {\n\t\t\t\t// Track if we're on the target or not\n\t\t\t\tthis._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) {\n\t\t\t\t\tif(!this.cache) {return FALSE; }\n\t\t\t\t\tthis.cache.onTarget = event.type === 'mouseenter';\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Update tooltip position on mousemove\n\t\t\tthis._bind(documentTarget, 'mousemove', function(event) {\n\t\t\t\t// Update the tooltip position only if the tooltip is visible and adjustment is enabled\n\t\t\t\tif(this.rendered && this.cache.onTarget && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0) {\n\t\t\t\t\tthis.reposition(event);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Adjust positions of the tooltip on window resize if enabled\n\tif(posOptions.adjust.resize || viewportTarget.length) {\n\t\tthis._bind( $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod );\n\t}\n\n\t// Adjust tooltip position on scroll of the window or viewport element if present\n\tif(posOptions.adjust.scroll) {\n\t\tthis._bind( windowTarget.add(posOptions.container), 'scroll', repositionMethod );\n\t}\n};\n\n// Un-assignment method\nPROTOTYPE._unassignEvents = function() {\n\tvar options = this.options,\n\t\tshowTargets = options.show.target,\n\t\thideTargets = options.hide.target,\n\t\ttargets = $.grep([\n\t\t\tthis.elements.target[0],\n\t\t\tthis.rendered && this.tooltip[0],\n\t\t\toptions.position.container[0],\n\t\t\toptions.position.viewport[0],\n\t\t\toptions.position.container.closest('html')[0], // unfocus\n\t\t\twindow,\n\t\t\tdocument\n\t\t], function(i) {\n\t\t\treturn typeof i === 'object';\n\t\t});\n\n\t// Add show and hide targets if they're valid\n\tif(showTargets && showTargets.toArray) {\n\t\ttargets = targets.concat(showTargets.toArray());\n\t}\n\tif(hideTargets && hideTargets.toArray) {\n\t\ttargets = targets.concat(hideTargets.toArray());\n\t}\n\n\t// Unbind the events\n\tthis._unbind(targets)\n\t\t._unbind(targets, 'destroy')\n\t\t._unbind(targets, 'inactive');\n};\n\n// Apply common event handlers using delegate (avoids excessive .bind calls!)\n$(function() {\n\tdelegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) {\n\t\tvar state = event.type === 'mouseenter',\n\t\t\ttooltip = $(event.currentTarget),\n\t\t\ttarget = $(event.relatedTarget || event.target),\n\t\t\toptions = this.options;\n\n\t\t// On mouseenter...\n\t\tif(state) {\n\t\t\t// Focus the tooltip on mouseenter (z-index stacking)\n\t\t\tthis.focus(event);\n\n\t\t\t// Clear hide timer on tooltip hover to prevent it from closing\n\t\t\ttooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide);\n\t\t}\n\n\t\t// On mouseleave...\n\t\telse {\n\t\t\t// When mouse tracking is enabled, hide when we leave the tooltip and not onto the show target (if a hide event is set)\n\t\t\tif(options.position.target === 'mouse' && options.position.adjust.mouse &&\n\t\t\t\toptions.hide.event && options.show.target && !target.closest(options.show.target[0]).length) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t}\n\n\t\t// Add hover class\n\t\ttooltip.toggleClass(CLASS_HOVER, state);\n\t});\n\n\t// Define events which reset the 'inactive' event handler\n\tdelegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod);\n});\n;// Initialization method\nfunction init(elem, id, opts) {\n\tvar obj, posOptions, attr, config, title,\n\n\t// Setup element references\n\tdocBody = $(document.body),\n\n\t// Use document body instead of document element if needed\n\tnewTarget = elem[0] === document ? docBody : elem,\n\n\t// Grab metadata from element if plugin is present\n\tmetadata = elem.metadata ? elem.metadata(opts.metadata) : NULL,\n\n\t// If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise\n\tmetadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL,\n\n\t// Grab data from metadata.name (or data-qtipopts as fallback) using .data() method,\n\thtml5 = elem.data(opts.metadata.name || 'qtipopts');\n\n\t// If we don't get an object returned attempt to parse it manualyl without parseJSON\n\t/* eslint-disable no-empty */\n\ttry { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; }\n\tcatch(e) {}\n\t/* eslint-enable no-empty */\n\n\t// Merge in and sanitize metadata\n\tconfig = $.extend(TRUE, {}, QTIP.defaults, opts,\n\t\ttypeof html5 === 'object' ? sanitizeOptions(html5) : NULL,\n\t\tsanitizeOptions(metadata5 || metadata));\n\n\t// Re-grab our positioning options now we've merged our metadata and set id to passed value\n\tposOptions = config.position;\n\tconfig.id = id;\n\n\t// Setup missing content if none is detected\n\tif('boolean' === typeof config.content.text) {\n\t\tattr = elem.attr(config.content.attr);\n\n\t\t// Grab from supplied attribute if available\n\t\tif(config.content.attr !== FALSE && attr) { config.content.text = attr; }\n\n\t\t// No valid content was found, abort render\n\t\telse { return FALSE; }\n\t}\n\n\t// Setup target options\n\tif(!posOptions.container.length) { posOptions.container = docBody; }\n\tif(posOptions.target === FALSE) { posOptions.target = newTarget; }\n\tif(config.show.target === FALSE) { config.show.target = newTarget; }\n\tif(config.show.solo === TRUE) { config.show.solo = posOptions.container.closest('body'); }\n\tif(config.hide.target === FALSE) { config.hide.target = newTarget; }\n\tif(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; }\n\n\t// Ensure we only use a single container\n\tposOptions.container = posOptions.container.eq(0);\n\n\t// Convert position corner values into x and y strings\n\tposOptions.at = new CORNER(posOptions.at, TRUE);\n\tposOptions.my = new CORNER(posOptions.my);\n\n\t// Destroy previous tooltip if overwrite is enabled, or skip element if not\n\tif(elem.data(NAMESPACE)) {\n\t\tif(config.overwrite) {\n\t\t\telem.qtip('destroy', true);\n\t\t}\n\t\telse if(config.overwrite === FALSE) {\n\t\t\treturn FALSE;\n\t\t}\n\t}\n\n\t// Add has-qtip attribute\n\telem.attr(ATTR_HAS, id);\n\n\t// Remove title attribute and store it if present\n\tif(config.suppress && (title = elem.attr('title'))) {\n\t\t// Final attr call fixes event delegation and IE default tooltip showing problem\n\t\telem.removeAttr('title').attr(oldtitle, title).attr('title', '');\n\t}\n\n\t// Initialize the tooltip and add API reference\n\tobj = new QTip(elem, config, id, !!attr);\n\telem.data(NAMESPACE, obj);\n\n\treturn obj;\n}\n\n// jQuery $.fn extension method\nQTIP = $.fn.qtip = function(options, notation, newValue)\n{\n\tvar command = ('' + options).toLowerCase(), // Parse command\n\t\treturned = NULL,\n\t\targs = $.makeArray(arguments).slice(1),\n\t\tevent = args[args.length - 1],\n\t\topts = this[0] ? $.data(this[0], NAMESPACE) : NULL;\n\n\t// Check for API request\n\tif(!arguments.length && opts || command === 'api') {\n\t\treturn opts;\n\t}\n\n\t// Execute API command if present\n\telse if('string' === typeof options) {\n\t\tthis.each(function() {\n\t\t\tvar api = $.data(this, NAMESPACE);\n\t\t\tif(!api) { return TRUE; }\n\n\t\t\t// Cache the event if possible\n\t\t\tif(event && event.timeStamp) { api.cache.event = event; }\n\n\t\t\t// Check for specific API commands\n\t\t\tif(notation && (command === 'option' || command === 'options')) {\n\t\t\t\tif(newValue !== undefined || $.isPlainObject(notation)) {\n\t\t\t\t\tapi.set(notation, newValue);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturned = api.get(notation);\n\t\t\t\t\treturn FALSE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Execute API command\n\t\t\telse if(api[command]) {\n\t\t\t\tapi[command].apply(api, args);\n\t\t\t}\n\t\t});\n\n\t\treturn returned !== NULL ? returned : this;\n\t}\n\n\t// No API commands. validate provided options and setup qTips\n\telse if('object' === typeof options || !arguments.length) {\n\t\t// Sanitize options first\n\t\topts = sanitizeOptions($.extend(TRUE, {}, options));\n\n\t\treturn this.each(function(i) {\n\t\t\tvar api, id;\n\n\t\t\t// Find next available ID, or use custom ID if provided\n\t\t\tid = $.isArray(opts.id) ? opts.id[i] : opts.id;\n\t\t\tid = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id;\n\n\t\t\t// Initialize the qTip and re-grab newly sanitized options\n\t\t\tapi = init($(this), id, opts);\n\t\t\tif(api === FALSE) { return TRUE; }\n\t\t\telse { QTIP.api[id] = api; }\n\n\t\t\t// Initialize plugins\n\t\t\t$.each(PLUGINS, function() {\n\t\t\t\tif(this.initialize === 'initialize') { this(api); }\n\t\t\t});\n\n\t\t\t// Assign initial pre-render events\n\t\t\tapi._assignInitialEvents(event);\n\t\t});\n\t}\n};\n\n// Expose class\n$.qtip = QTip;\n\n// Populated in render method\nQTIP.api = {};\n;$.each({\n\t/* Allow other plugins to successfully retrieve the title of an element with a qTip applied */\n\tattr: function(attr, val) {\n\t\tif(this.length) {\n\t\t\tvar self = this[0],\n\t\t\t\ttitle = 'title',\n\t\t\t\tapi = $.data(self, 'qtip');\n\n\t\t\tif(attr === title && api && api.options && 'object' === typeof api && 'object' === typeof api.options && api.options.suppress) {\n\t\t\t\tif(arguments.length < 2) {\n\t\t\t\t\treturn $.attr(self, oldtitle);\n\t\t\t\t}\n\n\t\t\t\t// If qTip is rendered and title was originally used as content, update it\n\t\t\t\tif(api && api.options.content.attr === title && api.cache.attr) {\n\t\t\t\t\tapi.set('content.text', val);\n\t\t\t\t}\n\n\t\t\t\t// Use the regular attr method to set, then cache the result\n\t\t\t\treturn this.attr(oldtitle, val);\n\t\t\t}\n\t\t}\n\n\t\treturn $.fn['attr'+replaceSuffix].apply(this, arguments);\n\t},\n\n\t/* Allow clone to correctly retrieve cached title attributes */\n\tclone: function(keepData) {\n\t\t// Clone our element using the real clone method\n\t\tvar elems = $.fn['clone'+replaceSuffix].apply(this, arguments);\n\n\t\t// Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false\n\t\tif(!keepData) {\n\t\t\telems.filter('['+oldtitle+']').attr('title', function() {\n\t\t\t\treturn $.attr(this, oldtitle);\n\t\t\t})\n\t\t\t.removeAttr(oldtitle);\n\t\t}\n\n\t\treturn elems;\n\t}\n}, function(name, func) {\n\tif(!func || $.fn[name+replaceSuffix]) { return TRUE; }\n\n\tvar old = $.fn[name+replaceSuffix] = $.fn[name];\n\t$.fn[name] = function() {\n\t\treturn func.apply(this, arguments) || old.apply(this, arguments);\n\t};\n});\n\n/* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar).\n * This snippet is taken directly from jQuery UI source code found here:\n * http://code.jquery.com/ui/jquery-ui-git.js\n */\nif(!$.ui) {\n\t$['cleanData'+replaceSuffix] = $.cleanData;\n\t$.cleanData = function( elems ) {\n\t\tfor(var i = 0, elem; (elem = $( elems[i] )).length; i++) {\n\t\t\tif(elem.attr(ATTR_HAS)) {\n\t\t\t\t/* eslint-disable no-empty */\n\t\t\t\ttry { elem.triggerHandler('removeqtip'); }\n\t\t\t\tcatch( e ) {}\n\t\t\t\t/* eslint-enable no-empty */\n\t\t\t}\n\t\t}\n\t\t$['cleanData'+replaceSuffix].apply(this, arguments);\n\t};\n}\n;// qTip version\nQTIP.version = '3.0.3-5-g';\n\n// Base ID for all qTips\nQTIP.nextid = 0;\n\n// Inactive events array\nQTIP.inactiveEvents = INACTIVE_EVENTS;\n\n// Base z-index for all qTips\nQTIP.zindex = 15000;\n\n// Define configuration defaults\nQTIP.defaults = {\n\tprerender: FALSE,\n\tid: FALSE,\n\toverwrite: TRUE,\n\tsuppress: TRUE,\n\tcontent: {\n\t\ttext: TRUE,\n\t\tattr: 'title',\n\t\ttitle: FALSE,\n\t\tbutton: FALSE\n\t},\n\tposition: {\n\t\tmy: 'top left',\n\t\tat: 'bottom right',\n\t\ttarget: FALSE,\n\t\tcontainer: FALSE,\n\t\tviewport: FALSE,\n\t\tadjust: {\n\t\t\tx: 0, y: 0,\n\t\t\tmouse: TRUE,\n\t\t\tscroll: TRUE,\n\t\t\tresize: TRUE,\n\t\t\tmethod: 'flipinvert flipinvert'\n\t\t},\n\t\teffect: function(api, pos) {\n\t\t\t$(this).animate(pos, {\n\t\t\t\tduration: 200,\n\t\t\t\tqueue: FALSE\n\t\t\t});\n\t\t}\n\t},\n\tshow: {\n\t\ttarget: FALSE,\n\t\tevent: 'mouseenter',\n\t\teffect: TRUE,\n\t\tdelay: 90,\n\t\tsolo: FALSE,\n\t\tready: FALSE,\n\t\tautofocus: FALSE\n\t},\n\thide: {\n\t\ttarget: FALSE,\n\t\tevent: 'mouseleave',\n\t\teffect: TRUE,\n\t\tdelay: 0,\n\t\tfixed: FALSE,\n\t\tinactive: FALSE,\n\t\tleave: 'window',\n\t\tdistance: FALSE\n\t},\n\tstyle: {\n\t\tclasses: '',\n\t\twidget: FALSE,\n\t\twidth: FALSE,\n\t\theight: FALSE,\n\t\tdef: TRUE\n\t},\n\tevents: {\n\t\trender: NULL,\n\t\tmove: NULL,\n\t\tshow: NULL,\n\t\thide: NULL,\n\t\ttoggle: NULL,\n\t\tvisible: NULL,\n\t\thidden: NULL,\n\t\tfocus: NULL,\n\t\tblur: NULL\n\t}\n};\n;var TIP,\ncreateVML,\nSCALE,\nPIXEL_RATIO,\nBACKING_STORE_RATIO,\n\n// Common CSS strings\nMARGIN = 'margin',\nBORDER = 'border',\nCOLOR = 'color',\nBG_COLOR = 'background-color',\nTRANSPARENT = 'transparent',\nIMPORTANT = ' !important',\n\n// Check if the browser supports elements\nHASCANVAS = !!document.createElement('canvas').getContext,\n\n// Invalid colour values used in parseColours()\nINVALID = /rgba?\\(0, 0, 0(, 0)?\\)|transparent|#123456/i;\n\n// Camel-case method, taken from jQuery source\n// http://code.jquery.com/jquery-1.8.0.js\nfunction camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); }\n\n/*\n * Modified from Modernizr's testPropsAll()\n * http://modernizr.com/downloads/modernizr-latest.js\n */\nvar cssProps = {}, cssPrefixes = ['Webkit', 'O', 'Moz', 'ms'];\nfunction vendorCss(elem, prop) {\n\tvar ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n\t\tprops = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '),\n\t\tcur, val, i = 0;\n\n\t// If the property has already been mapped...\n\tif(cssProps[prop]) { return elem.css(cssProps[prop]); }\n\n\twhile(cur = props[i++]) {\n\t\tif((val = elem.css(cur)) !== undefined) {\n\t\t\tcssProps[prop] = cur;\n\t\t\treturn val;\n\t\t}\n\t}\n}\n\n// Parse a given elements CSS property into an int\nfunction intCss(elem, prop) {\n\treturn Math.ceil(parseFloat(vendorCss(elem, prop)));\n}\n\n\n// VML creation (for IE only)\nif(!HASCANVAS) {\n\tcreateVML = function(tag, props, style) {\n\t\treturn '';\n\t};\n}\n\n// Canvas only definitions\nelse {\n\tPIXEL_RATIO = window.devicePixelRatio || 1;\n\tBACKING_STORE_RATIO = (function() {\n\t\tvar context = document.createElement('canvas').getContext('2d');\n\t\treturn context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||\n\t\t\t\tcontext.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;\n\t})();\n\tSCALE = PIXEL_RATIO / BACKING_STORE_RATIO;\n}\n\n\nfunction Tip(qtip, options) {\n\tthis._ns = 'tip';\n\tthis.options = options;\n\tthis.offset = options.offset;\n\tthis.size = [ options.width, options.height ];\n\n\t// Initialize\n\tthis.qtip = qtip;\n\tthis.init(qtip);\n}\n\n$.extend(Tip.prototype, {\n\tinit: function(qtip) {\n\t\tvar context, tip;\n\n\t\t// Create tip element and prepend to the tooltip\n\t\ttip = this.element = qtip.elements.tip = $('
      ', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip);\n\n\t\t// Create tip drawing element(s)\n\t\tif(HASCANVAS) {\n\t\t\t// save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()!\n\t\t\tcontext = $('').appendTo(this.element)[0].getContext('2d');\n\n\t\t\t// Setup constant parameters\n\t\t\tcontext.lineJoin = 'miter';\n\t\t\tcontext.miterLimit = 100000;\n\t\t\tcontext.save();\n\t\t}\n\t\telse {\n\t\t\tcontext = createVML('shape', 'coordorigin=\"0,0\"', 'position:absolute;');\n\t\t\tthis.element.html(context + context);\n\n\t\t\t// Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML\n\t\t\tqtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns);\n\t\t}\n\n\t\t// Bind update events\n\t\tqtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this);\n\n\t\t// Create it\n\t\tthis.create();\n\t},\n\n\t_swapDimensions: function() {\n\t\tthis.size[0] = this.options.height;\n\t\tthis.size[1] = this.options.width;\n\t},\n\t_resetDimensions: function() {\n\t\tthis.size[0] = this.options.width;\n\t\tthis.size[1] = this.options.height;\n\t},\n\n\t_useTitle: function(corner) {\n\t\tvar titlebar = this.qtip.elements.titlebar;\n\t\treturn titlebar && (\n\t\t\tcorner.y === TOP || corner.y === CENTER && this.element.position().top + this.size[1] / 2 + this.options.offset < titlebar.outerHeight(TRUE)\n\t\t);\n\t},\n\n\t_parseCorner: function(corner) {\n\t\tvar my = this.qtip.options.position.my;\n\n\t\t// Detect corner and mimic properties\n\t\tif(corner === FALSE || my === FALSE) {\n\t\t\tcorner = FALSE;\n\t\t}\n\t\telse if(corner === TRUE) {\n\t\t\tcorner = new CORNER( my.string() );\n\t\t}\n\t\telse if(!corner.string) {\n\t\t\tcorner = new CORNER(corner);\n\t\t\tcorner.fixed = TRUE;\n\t\t}\n\n\t\treturn corner;\n\t},\n\n\t_parseWidth: function(corner, side, use) {\n\t\tvar elements = this.qtip.elements,\n\t\t\tprop = BORDER + camel(side) + 'Width';\n\n\t\treturn (use ? intCss(use, prop) : \n\t\t\tintCss(elements.content, prop) ||\n\t\t\tintCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||\n\t\t\tintCss(elements.tooltip, prop)\n\t\t) || 0;\n\t},\n\n\t_parseRadius: function(corner) {\n\t\tvar elements = this.qtip.elements,\n\t\t\tprop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius';\n\n\t\treturn BROWSER.ie < 9 ? 0 :\n\t\t\tintCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||\n\t\t\tintCss(elements.tooltip, prop) || 0;\n\t},\n\n\t_invalidColour: function(elem, prop, compare) {\n\t\tvar val = elem.css(prop);\n\t\treturn !val || compare && val === elem.css(compare) || INVALID.test(val) ? FALSE : val;\n\t},\n\n\t_parseColours: function(corner) {\n\t\tvar elements = this.qtip.elements,\n\t\t\ttip = this.element.css('cssText', ''),\n\t\t\tborderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR),\n\t\t\tcolorElem = this._useTitle(corner) && elements.titlebar || elements.content,\n\t\t\tcss = this._invalidColour, color = [];\n\n\t\t// Attempt to detect the background colour from various elements, left-to-right precedance\n\t\tcolor[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) ||\n\t\t\tcss(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR);\n\n\t\t// Attempt to detect the correct border side colour from various elements, left-to-right precedance\n\t\tcolor[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) ||\n\t\t\tcss(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide);\n\n\t\t// Reset background and border colours\n\t\t$('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';');\n\n\t\treturn color;\n\t},\n\n\t_calculateSize: function(corner) {\n\t\tvar y = corner.precedance === Y,\n\t\t\twidth = this.options.width,\n\t\t\theight = this.options.height,\n\t\t\tisCenter = corner.abbrev() === 'c',\n\t\t\tbase = (y ? width: height) * (isCenter ? 0.5 : 1),\n\t\t\tpow = Math.pow,\n\t\t\tround = Math.round,\n\t\t\tbigHyp, ratio, result,\n\n\t\tsmallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),\n\t\thyp = [\n\t\t\tthis.border / base * smallHyp,\n\t\t\tthis.border / height * smallHyp\n\t\t];\n\n\t\thyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) );\n\t\thyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) );\n\n\t\tbigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]);\n\t\tratio = bigHyp / smallHyp;\n\n\t\tresult = [ round(ratio * width), round(ratio * height) ];\n\t\treturn y ? result : result.reverse();\n\t},\n\n\t// Tip coordinates calculator\n\t_calculateTip: function(corner, size, scale) {\n\t\tscale = scale || 1;\n\t\tsize = size || this.size;\n\n\t\tvar width = size[0] * scale,\n\t\t\theight = size[1] * scale,\n\t\t\twidth2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2),\n\n\t\t// Define tip coordinates in terms of height and width values\n\t\ttips = {\n\t\t\tbr:\t[0,0,\t\twidth,height,\twidth,0],\n\t\t\tbl:\t[0,0,\t\twidth,0,\t\t0,height],\n\t\t\ttr:\t[0,height,\twidth,0,\t\twidth,height],\n\t\t\ttl:\t[0,0,\t\t0,height,\t\twidth,height],\n\t\t\ttc:\t[0,height,\twidth2,0,\t\twidth,height],\n\t\t\tbc:\t[0,0,\t\twidth,0,\t\twidth2,height],\n\t\t\trc:\t[0,0,\t\twidth,height2,\t0,height],\n\t\t\tlc:\t[width,0,\twidth,height,\t0,height2]\n\t\t};\n\n\t\t// Set common side shapes\n\t\ttips.lt = tips.br; tips.rt = tips.bl;\n\t\ttips.lb = tips.tr; tips.rb = tips.tl;\n\n\t\treturn tips[ corner.abbrev() ];\n\t},\n\n\t// Tip coordinates drawer (canvas)\n\t_drawCoords: function(context, coords) {\n\t\tcontext.beginPath();\n\t\tcontext.moveTo(coords[0], coords[1]);\n\t\tcontext.lineTo(coords[2], coords[3]);\n\t\tcontext.lineTo(coords[4], coords[5]);\n\t\tcontext.closePath();\n\t},\n\n\tcreate: function() {\n\t\t// Determine tip corner\n\t\tvar c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner);\n\n\t\t// If we have a tip corner...\n\t\tthis.enabled = !!this.corner && this.corner.abbrev() !== 'c';\n\t\tif(this.enabled) {\n\t\t\t// Cache it\n\t\t\tthis.qtip.cache.corner = c.clone();\n\n\t\t\t// Create it\n\t\t\tthis.update();\n\t\t}\n\n\t\t// Toggle tip element\n\t\tthis.element.toggle(this.enabled);\n\n\t\treturn this.corner;\n\t},\n\n\tupdate: function(corner, position) {\n\t\tif(!this.enabled) { return this; }\n\n\t\tvar elements = this.qtip.elements,\n\t\t\ttip = this.element,\n\t\t\tinner = tip.children(),\n\t\t\toptions = this.options,\n\t\t\tcurSize = this.size,\n\t\t\tmimic = options.mimic,\n\t\t\tround = Math.round,\n\t\t\tcolor, precedance, context,\n\t\t\tcoords, bigCoords, translate, newSize, border;\n\n\t\t// Re-determine tip if not already set\n\t\tif(!corner) { corner = this.qtip.cache.corner || this.corner; }\n\n\t\t// Use corner property if we detect an invalid mimic value\n\t\tif(mimic === FALSE) { mimic = corner; }\n\n\t\t// Otherwise inherit mimic properties from the corner object as necessary\n\t\telse {\n\t\t\tmimic = new CORNER(mimic);\n\t\t\tmimic.precedance = corner.precedance;\n\n\t\t\tif(mimic.x === 'inherit') { mimic.x = corner.x; }\n\t\t\telse if(mimic.y === 'inherit') { mimic.y = corner.y; }\n\t\t\telse if(mimic.x === mimic.y) {\n\t\t\t\tmimic[ corner.precedance ] = corner[ corner.precedance ];\n\t\t\t}\n\t\t}\n\t\tprecedance = mimic.precedance;\n\n\t\t// Ensure the tip width.height are relative to the tip position\n\t\tif(corner.precedance === X) { this._swapDimensions(); }\n\t\telse { this._resetDimensions(); }\n\n\t\t// Update our colours\n\t\tcolor = this.color = this._parseColours(corner);\n\n\t\t// Detect border width, taking into account colours\n\t\tif(color[1] !== TRANSPARENT) {\n\t\t\t// Grab border width\n\t\t\tborder = this.border = this._parseWidth(corner, corner[corner.precedance]);\n\n\t\t\t// If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips)\n\t\t\tif(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; }\n\n\t\t\t// Set border width (use detected border width if options.border is true)\n\t\t\tthis.border = border = options.border !== TRUE ? options.border : border;\n\t\t}\n\n\t\t// Border colour was invalid, set border to zero\n\t\telse { this.border = border = 0; }\n\n\t\t// Determine tip size\n\t\tnewSize = this.size = this._calculateSize(corner);\n\t\ttip.css({\n\t\t\twidth: newSize[0],\n\t\t\theight: newSize[1],\n\t\t\tlineHeight: newSize[1]+'px'\n\t\t});\n\n\t\t// Calculate tip translation\n\t\tif(corner.precedance === Y) {\n\t\t\ttranslate = [\n\t\t\t\tround(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2),\n\t\t\t\tround(mimic.y === TOP ? newSize[1] - curSize[1] : 0)\n\t\t\t];\n\t\t}\n\t\telse {\n\t\t\ttranslate = [\n\t\t\t\tround(mimic.x === LEFT ? newSize[0] - curSize[0] : 0),\n\t\t\t\tround(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2)\n\t\t\t];\n\t\t}\n\n\t\t// Canvas drawing implementation\n\t\tif(HASCANVAS) {\n\t\t\t// Grab canvas context and clear/save it\n\t\t\tcontext = inner[0].getContext('2d');\n\t\t\tcontext.restore(); context.save();\n\t\t\tcontext.clearRect(0,0,6000,6000);\n\n\t\t\t// Calculate coordinates\n\t\t\tcoords = this._calculateTip(mimic, curSize, SCALE);\n\t\t\tbigCoords = this._calculateTip(mimic, this.size, SCALE);\n\n\t\t\t// Set the canvas size using calculated size\n\t\t\tinner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE);\n\t\t\tinner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]);\n\n\t\t\t// Draw the outer-stroke tip\n\t\t\tthis._drawCoords(context, bigCoords);\n\t\t\tcontext.fillStyle = color[1];\n\t\t\tcontext.fill();\n\n\t\t\t// Draw the actual tip\n\t\t\tcontext.translate(translate[0] * SCALE, translate[1] * SCALE);\n\t\t\tthis._drawCoords(context, coords);\n\t\t\tcontext.fillStyle = color[0];\n\t\t\tcontext.fill();\n\t\t}\n\n\t\t// VML (IE Proprietary implementation)\n\t\telse {\n\t\t\t// Calculate coordinates\n\t\t\tcoords = this._calculateTip(mimic);\n\n\t\t\t// Setup coordinates string\n\t\t\tcoords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] +\n\t\t\t\t',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe';\n\n\t\t\t// Setup VML-specific offset for pixel-perfection\n\t\t\ttranslate[2] = border && /^(r|b)/i.test(corner.string()) ?\n\t\t\t\tBROWSER.ie === 8 ? 2 : 1 : 0;\n\n\t\t\t// Set initial CSS\n\t\t\tinner.css({\n\t\t\t\tcoordsize: newSize[0]+border + ' ' + newSize[1]+border,\n\t\t\t\tantialias: ''+(mimic.string().indexOf(CENTER) > -1),\n\t\t\t\tleft: translate[0] - translate[2] * Number(precedance === X),\n\t\t\t\ttop: translate[1] - translate[2] * Number(precedance === Y),\n\t\t\t\twidth: newSize[0] + border,\n\t\t\t\theight: newSize[1] + border\n\t\t\t})\n\t\t\t.each(function(i) {\n\t\t\t\tvar $this = $(this);\n\n\t\t\t\t// Set shape specific attributes\n\t\t\t\t$this[ $this.prop ? 'prop' : 'attr' ]({\n\t\t\t\t\tcoordsize: newSize[0]+border + ' ' + newSize[1]+border,\n\t\t\t\t\tpath: coords,\n\t\t\t\t\tfillcolor: color[0],\n\t\t\t\t\tfilled: !!i,\n\t\t\t\t\tstroked: !i\n\t\t\t\t})\n\t\t\t\t.toggle(!!(border || i));\n\n\t\t\t\t// Check if border is enabled and add stroke element\n\t\t\t\t!i && $this.html( createVML(\n\t\t\t\t\t'stroke', 'weight=\"'+border*2+'px\" color=\"'+color[1]+'\" miterlimit=\"1000\" joinstyle=\"miter\"'\n\t\t\t\t) );\n\t\t\t});\n\t\t}\n\n\t\t// Opera bug #357 - Incorrect tip position\n\t\t// https://github.com/Craga89/qTip2/issues/367\n\t\twindow.opera && setTimeout(function() {\n\t\t\telements.tip.css({\n\t\t\t\tdisplay: 'inline-block',\n\t\t\t\tvisibility: 'visible'\n\t\t\t});\n\t\t}, 1);\n\n\t\t// Position if needed\n\t\tif(position !== FALSE) { this.calculate(corner, newSize); }\n\t},\n\n\tcalculate: function(corner, size) {\n\t\tif(!this.enabled) { return FALSE; }\n\n\t\tvar self = this,\n\t\t\telements = this.qtip.elements,\n\t\t\ttip = this.element,\n\t\t\tuserOffset = this.options.offset,\n\t\t\tposition = {},\n\t\t\tprecedance, corners;\n\n\t\t// Inherit corner if not provided\n\t\tcorner = corner || this.corner;\n\t\tprecedance = corner.precedance;\n\n\t\t// Determine which tip dimension to use for adjustment\n\t\tsize = size || this._calculateSize(corner);\n\n\t\t// Setup corners and offset array\n\t\tcorners = [ corner.x, corner.y ];\n\t\tif(precedance === X) { corners.reverse(); }\n\n\t\t// Calculate tip position\n\t\t$.each(corners, function(i, side) {\n\t\t\tvar b, bc, br;\n\n\t\t\tif(side === CENTER) {\n\t\t\t\tb = precedance === Y ? LEFT : TOP;\n\t\t\t\tposition[ b ] = '50%';\n\t\t\t\tposition[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tb = self._parseWidth(corner, side, elements.tooltip);\n\t\t\t\tbc = self._parseWidth(corner, side, elements.content);\n\t\t\t\tbr = self._parseRadius(corner);\n\n\t\t\t\tposition[ side ] = Math.max(-self.border, i ? bc : userOffset + (br > b ? br : -b));\n\t\t\t}\n\t\t});\n\n\t\t// Adjust for tip size\n\t\tposition[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ];\n\n\t\t// Set and return new position\n\t\ttip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position);\n\t\treturn position;\n\t},\n\n\treposition: function(event, api, pos) {\n\t\tif(!this.enabled) { return; }\n\n\t\tvar cache = api.cache,\n\t\t\tnewCorner = this.corner.clone(),\n\t\t\tadjust = pos.adjusted,\n\t\t\tmethod = api.options.position.adjust.method.split(' '),\n\t\t\thorizontal = method[0],\n\t\t\tvertical = method[1] || method[0],\n\t\t\tshift = { left: FALSE, top: FALSE, x: 0, y: 0 },\n\t\t\toffset, css = {}, props;\n\n\t\tfunction shiftflip(direction, precedance, popposite, side, opposite) {\n\t\t\t// Horizontal - Shift or flip method\n\t\t\tif(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) {\n\t\t\t\tnewCorner.precedance = newCorner.precedance === X ? Y : X;\n\t\t\t}\n\t\t\telse if(direction !== SHIFT && adjust[side]){\n\t\t\t\tnewCorner[precedance] = newCorner[precedance] === CENTER ?\n\t\t\t\t\tadjust[side] > 0 ? side : opposite :\n\t\t\t\t\tnewCorner[precedance] === side ? opposite : side;\n\t\t\t}\n\t\t}\n\n\t\tfunction shiftonly(xy, side, opposite) {\n\t\t\tif(newCorner[xy] === CENTER) {\n\t\t\t\tcss[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprops = offset[opposite] !== undefined ?\n\t\t\t\t\t[ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ];\n\n\t\t\t\tif( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) {\n\t\t\t\t\tpos[side] -= adjust[side];\n\t\t\t\t\tshift[side] = FALSE;\n\t\t\t\t}\n\n\t\t\t\tcss[ offset[opposite] !== undefined ? opposite : side ] = shift[xy];\n\t\t\t}\n\t\t}\n\n\t\t// If our tip position isn't fixed e.g. doesn't adjust with viewport...\n\t\tif(this.corner.fixed !== TRUE) {\n\t\t\t// Perform shift/flip adjustments\n\t\t\tshiftflip(horizontal, X, Y, LEFT, RIGHT);\n\t\t\tshiftflip(vertical, Y, X, TOP, BOTTOM);\n\n\t\t\t// Update and redraw the tip if needed (check cached details of last drawn tip)\n\t\t\tif(newCorner.string() !== cache.corner.string() || cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left) {\n\t\t\t\tthis.update(newCorner, FALSE);\n\t\t\t}\n\t\t}\n\n\t\t// Setup tip offset properties\n\t\toffset = this.calculate(newCorner);\n\n\t\t// Readjust offset object to make it left/top\n\t\tif(offset.right !== undefined) { offset.left = -offset.right; }\n\t\tif(offset.bottom !== undefined) { offset.top = -offset.bottom; }\n\t\toffset.user = this.offset;\n\n\t\t// Perform shift adjustments\n\t\tshift.left = horizontal === SHIFT && !!adjust.left;\n\t\tif(shift.left) {\n\t\t\tshiftonly(X, LEFT, RIGHT);\n\t\t}\n\t\tshift.top = vertical === SHIFT && !!adjust.top;\n\t\tif(shift.top) {\n\t\t\tshiftonly(Y, TOP, BOTTOM);\n\t\t}\n\n\t\t/*\n\t\t* If the tip is adjusted in both dimensions, or in a\n\t\t* direction that would cause it to be anywhere but the\n\t\t* outer border, hide it!\n\t\t*/\n\t\tthis.element.css(css).toggle(\n\t\t\t!(shift.x && shift.y || newCorner.x === CENTER && shift.y || newCorner.y === CENTER && shift.x)\n\t\t);\n\n\t\t// Adjust position to accomodate tip dimensions\n\t\tpos.left -= offset.left.charAt ? offset.user :\n\t\t\thorizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0;\n\t\tpos.top -= offset.top.charAt ? offset.user :\n\t\t\tvertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0;\n\n\t\t// Cache details\n\t\tcache.cornerLeft = adjust.left; cache.cornerTop = adjust.top;\n\t\tcache.corner = newCorner.clone();\n\t},\n\n\tdestroy: function() {\n\t\t// Unbind events\n\t\tthis.qtip._unbind(this.qtip.tooltip, this._ns);\n\n\t\t// Remove the tip element(s)\n\t\tif(this.qtip.elements.tip) {\n\t\t\tthis.qtip.elements.tip.find('*')\n\t\t\t\t.remove().end().remove();\n\t\t}\n\t}\n});\n\nTIP = PLUGINS.tip = function(api) {\n\treturn new Tip(api, api.options.style.tip);\n};\n\n// Initialize tip on render\nTIP.initialize = 'render';\n\n// Setup plugin sanitization options\nTIP.sanitize = function(options) {\n\tif(options.style && 'tip' in options.style) {\n\t\tvar opts = options.style.tip;\n\t\tif(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; }\n\t\tif(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; }\n\t}\n};\n\n// Add new option checks for the plugin\nCHECKS.tip = {\n\t'^position.my|style.tip.(corner|mimic|border)$': function() {\n\t\t// Make sure a tip can be drawn\n\t\tthis.create();\n\n\t\t// Reposition the tooltip\n\t\tthis.qtip.reposition();\n\t},\n\t'^style.tip.(height|width)$': function(obj) {\n\t\t// Re-set dimensions and redraw the tip\n\t\tthis.size = [ obj.width, obj.height ];\n\t\tthis.update();\n\n\t\t// Reposition the tooltip\n\t\tthis.qtip.reposition();\n\t},\n\t'^content.title|style.(classes|widget)$': function() {\n\t\tthis.update();\n\t}\n};\n\n// Extend original qTip defaults\n$.extend(TRUE, QTIP.defaults, {\n\tstyle: {\n\t\ttip: {\n\t\t\tcorner: TRUE,\n\t\t\tmimic: FALSE,\n\t\t\twidth: 6,\n\t\t\theight: 6,\n\t\t\tborder: TRUE,\n\t\t\toffset: 0\n\t\t}\n\t}\n});\n;var MODAL, OVERLAY,\n\tMODALCLASS = 'qtip-modal',\n\tMODALSELECTOR = '.'+MODALCLASS;\n\nOVERLAY = function()\n{\n\tvar self = this,\n\t\tfocusableElems = {},\n\t\tcurrent,\n\t\tprevState,\n\t\telem;\n\n\t// Modified code from jQuery UI 1.10.0 source\n\t// http://code.jquery.com/ui/1.10.0/jquery-ui.js\n\tfunction focusable(element) {\n\t\t// Use the defined focusable checker when possible\n\t\tif($.expr[':'].focusable) { return $.expr[':'].focusable; }\n\n\t\tvar isTabIndexNotNaN = !isNaN($.attr(element, 'tabindex')),\n\t\t\tnodeName = element.nodeName && element.nodeName.toLowerCase(),\n\t\t\tmap, mapName, img;\n\n\t\tif('area' === nodeName) {\n\t\t\tmap = element.parentNode;\n\t\t\tmapName = map.name;\n\t\t\tif(!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\timg = $('img[usemap=#' + mapName + ']')[0];\n\t\t\treturn !!img && img.is(':visible');\n\t\t}\n\n\t\treturn /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t\t!element.disabled :\n\t\t\t'a' === nodeName ?\n\t\t\t\telement.href || isTabIndexNotNaN :\n\t\t\t\tisTabIndexNotNaN\n\t\t;\n\t}\n\n\t// Focus inputs using cached focusable elements (see update())\n\tfunction focusInputs(blurElems) {\n\t\t// Blurring body element in IE causes window.open windows to unfocus!\n\t\tif(focusableElems.length < 1 && blurElems.length) { blurElems.not('body').blur(); }\n\n\t\t// Focus the inputs\n\t\telse { focusableElems.first().focus(); }\n\t}\n\n\t// Steal focus from elements outside tooltip\n\tfunction stealFocus(event) {\n\t\tif(!elem.is(':visible')) { return; }\n\n\t\tvar target = $(event.target),\n\t\t\ttooltip = current.tooltip,\n\t\t\tcontainer = target.closest(SELECTOR),\n\t\t\ttargetOnTop;\n\n\t\t// Determine if input container target is above this\n\t\ttargetOnTop = container.length < 1 ? FALSE :\n\t\t\tparseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10);\n\n\t\t// If we're showing a modal, but focus has landed on an input below\n\t\t// this modal, divert focus to the first visible input in this modal\n\t\t// or if we can't find one... the tooltip itself\n\t\tif(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) {\n\t\t\tfocusInputs(target);\n\t\t}\n\t}\n\n\t$.extend(self, {\n\t\tinit: function() {\n\t\t\t// Create document overlay\n\t\t\telem = self.elem = $('
      ', {\n\t\t\t\tid: 'qtip-overlay',\n\t\t\t\thtml: '
      ',\n\t\t\t\tmousedown: function() { return FALSE; }\n\t\t\t})\n\t\t\t.hide();\n\n\t\t\t// Make sure we can't focus anything outside the tooltip\n\t\t\t$(document.body).bind('focusin'+MODALSELECTOR, stealFocus);\n\n\t\t\t// Apply keyboard \"Escape key\" close handler\n\t\t\t$(document).bind('keydown'+MODALSELECTOR, function(event) {\n\t\t\t\tif(current && current.options.show.modal.escape && event.keyCode === 27) {\n\t\t\t\t\tcurrent.hide(event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply click handler for blur option\n\t\t\telem.bind('click'+MODALSELECTOR, function(event) {\n\t\t\t\tif(current && current.options.show.modal.blur) {\n\t\t\t\t\tcurrent.hide(event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn self;\n\t\t},\n\n\t\tupdate: function(api) {\n\t\t\t// Update current API reference\n\t\t\tcurrent = api;\n\n\t\t\t// Update focusable elements if enabled\n\t\t\tif(api.options.show.modal.stealfocus !== FALSE) {\n\t\t\t\tfocusableElems = api.tooltip.find('*').filter(function() {\n\t\t\t\t\treturn focusable(this);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse { focusableElems = []; }\n\t\t},\n\n\t\ttoggle: function(api, state, duration) {\n\t\t\tvar tooltip = api.tooltip,\n\t\t\t\toptions = api.options.show.modal,\n\t\t\t\teffect = options.effect,\n\t\t\t\ttype = state ? 'show': 'hide',\n\t\t\t\tvisible = elem.is(':visible'),\n\t\t\t\tvisibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip);\n\n\t\t\t// Set active tooltip API reference\n\t\t\tself.update(api);\n\n\t\t\t// If the modal can steal the focus...\n\t\t\t// Blur the current item and focus anything in the modal we an\n\t\t\tif(state && options.stealfocus !== FALSE) {\n\t\t\t\tfocusInputs( $(':focus') );\n\t\t\t}\n\n\t\t\t// Toggle backdrop cursor style on show\n\t\t\telem.toggleClass('blurs', options.blur);\n\n\t\t\t// Append to body on show\n\t\t\tif(state) {\n\t\t\t\telem.appendTo(document.body);\n\t\t\t}\n\n\t\t\t// Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible\n\t\t\tif(elem.is(':animated') && visible === state && prevState !== FALSE || !state && visibleModals.length) {\n\t\t\t\treturn self;\n\t\t\t}\n\n\t\t\t// Stop all animations\n\t\t\telem.stop(TRUE, FALSE);\n\n\t\t\t// Use custom function if provided\n\t\t\tif($.isFunction(effect)) {\n\t\t\t\teffect.call(elem, state);\n\t\t\t}\n\n\t\t\t// If no effect type is supplied, use a simple toggle\n\t\t\telse if(effect === FALSE) {\n\t\t\t\telem[ type ]();\n\t\t\t}\n\n\t\t\t// Use basic fade function\n\t\t\telse {\n\t\t\t\telem.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() {\n\t\t\t\t\tif(!state) { elem.hide(); }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Reset position and detach from body on hide\n\t\t\tif(!state) {\n\t\t\t\telem.queue(function(next) {\n\t\t\t\t\telem.css({ left: '', top: '' });\n\t\t\t\t\tif(!$(MODALSELECTOR).length) { elem.detach(); }\n\t\t\t\t\tnext();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Cache the state\n\t\t\tprevState = state;\n\n\t\t\t// If the tooltip is destroyed, set reference to null\n\t\t\tif(current.destroyed) { current = NULL; }\n\n\t\t\treturn self;\n\t\t}\n\t});\n\n\tself.init();\n};\nOVERLAY = new OVERLAY();\n\nfunction Modal(api, options) {\n\tthis.options = options;\n\tthis._ns = '-modal';\n\n\tthis.qtip = api;\n\tthis.init(api);\n}\n\n$.extend(Modal.prototype, {\n\tinit: function(qtip) {\n\t\tvar tooltip = qtip.tooltip;\n\n\t\t// If modal is disabled... return\n\t\tif(!this.options.on) { return this; }\n\n\t\t// Set overlay reference\n\t\tqtip.elements.overlay = OVERLAY.elem;\n\n\t\t// Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index\n\t\ttooltip.addClass(MODALCLASS).css('z-index', QTIP.modal_zindex + $(MODALSELECTOR).length);\n\n\t\t// Apply our show/hide/focus modal events\n\t\tqtip._bind(tooltip, ['tooltipshow', 'tooltiphide'], function(event, api, duration) {\n\t\t\tvar oEvent = event.originalEvent;\n\n\t\t\t// Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop\n\t\t\tif(event.target === tooltip[0]) {\n\t\t\t\tif(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) {\n\t\t\t\t\t/* eslint-disable no-empty */\n\t\t\t\t\ttry { event.preventDefault(); }\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t\t/* eslint-enable no-empty */\n\t\t\t\t}\n\t\t\t\telse if(!oEvent || oEvent && oEvent.type !== 'tooltipsolo') {\n\t\t\t\t\tthis.toggle(event, event.type === 'tooltipshow', duration);\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._ns, this);\n\n\t\t// Adjust modal z-index on tooltip focus\n\t\tqtip._bind(tooltip, 'tooltipfocus', function(event, api) {\n\t\t\t// If focus was cancelled before it reached us, don't do anything\n\t\t\tif(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; }\n\n\t\t\tvar qtips = $(MODALSELECTOR),\n\n\t\t\t// Keep the modal's lower than other, regular qtips\n\t\t\tnewIndex = QTIP.modal_zindex + qtips.length,\n\t\t\tcurIndex = parseInt(tooltip[0].style.zIndex, 10);\n\n\t\t\t// Set overlay z-index\n\t\t\tOVERLAY.elem[0].style.zIndex = newIndex - 1;\n\n\t\t\t// Reduce modal z-index's and keep them properly ordered\n\t\t\tqtips.each(function() {\n\t\t\t\tif(this.style.zIndex > curIndex) {\n\t\t\t\t\tthis.style.zIndex -= 1;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Fire blur event for focused tooltip\n\t\t\tqtips.filter('.' + CLASS_FOCUS).qtip('blur', event.originalEvent);\n\n\t\t\t// Set the new z-index\n\t\t\ttooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;\n\n\t\t\t// Set current\n\t\t\tOVERLAY.update(api);\n\n\t\t\t// Prevent default handling\n\t\t\t/* eslint-disable no-empty */\n\t\t\ttry { event.preventDefault(); }\n\t\t\tcatch(e) {}\n\t\t\t/* eslint-enable no-empty */\n\t\t}, this._ns, this);\n\n\t\t// Focus any other visible modals when this one hides\n\t\tqtip._bind(tooltip, 'tooltiphide', function(event) {\n\t\t\tif(event.target === tooltip[0]) {\n\t\t\t\t$(MODALSELECTOR).filter(':visible').not(tooltip).last().qtip('focus', event);\n\t\t\t}\n\t\t}, this._ns, this);\n\t},\n\n\ttoggle: function(event, state, duration) {\n\t\t// Make sure default event hasn't been prevented\n\t\tif(event && event.isDefaultPrevented()) { return this; }\n\n\t\t// Toggle it\n\t\tOVERLAY.toggle(this.qtip, !!state, duration);\n\t},\n\n\tdestroy: function() {\n\t\t// Remove modal class\n\t\tthis.qtip.tooltip.removeClass(MODALCLASS);\n\n\t\t// Remove bound events\n\t\tthis.qtip._unbind(this.qtip.tooltip, this._ns);\n\n\t\t// Delete element reference\n\t\tOVERLAY.toggle(this.qtip, FALSE);\n\t\tdelete this.qtip.elements.overlay;\n\t}\n});\n\n\nMODAL = PLUGINS.modal = function(api) {\n\treturn new Modal(api, api.options.show.modal);\n};\n\n// Setup sanitiztion rules\nMODAL.sanitize = function(opts) {\n\tif(opts.show) {\n\t\tif(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; }\n\t\telse if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; }\n\t}\n};\n\n// Base z-index for all modal tooltips (use qTip core z-index as a base)\n/* eslint-disable camelcase */\nQTIP.modal_zindex = QTIP.zindex - 200;\n/* eslint-enable camelcase */\n\n// Plugin needs to be initialized on render\nMODAL.initialize = 'render';\n\n// Setup option set checks\nCHECKS.modal = {\n\t'^show.modal.(on|blur)$': function() {\n\t\t// Initialise\n\t\tthis.destroy();\n\t\tthis.init();\n\n\t\t// Show the modal if not visible already and tooltip is visible\n\t\tthis.qtip.elems.overlay.toggle(\n\t\t\tthis.qtip.tooltip[0].offsetWidth > 0\n\t\t);\n\t}\n};\n\n// Extend original api defaults\n$.extend(TRUE, QTIP.defaults, {\n\tshow: {\n\t\tmodal: {\n\t\t\ton: FALSE,\n\t\t\teffect: TRUE,\n\t\t\tblur: TRUE,\n\t\t\tstealfocus: TRUE,\n\t\t\tescape: TRUE\n\t\t}\n\t}\n});\n;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)\n{\n\tvar target = posOptions.target,\n\t\ttooltip = api.elements.tooltip,\n\t\tmy = posOptions.my,\n\t\tat = posOptions.at,\n\t\tadjust = posOptions.adjust,\n\t\tmethod = adjust.method.split(' '),\n\t\tmethodX = method[0],\n\t\tmethodY = method[1] || method[0],\n\t\tviewport = posOptions.viewport,\n\t\tcontainer = posOptions.container,\n\t\tadjusted = { left: 0, top: 0 },\n\t\tfixed, newMy, containerOffset, containerStatic,\n\t\tviewportWidth, viewportHeight, viewportScroll, viewportOffset;\n\n\t// If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return\n\tif(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') {\n\t\treturn adjusted;\n\t}\n\n\t// Cach container details\n\tcontainerOffset = container.offset() || adjusted;\n\tcontainerStatic = container.css('position') === 'static';\n\n\t// Cache our viewport details\n\tfixed = tooltip.css('position') === 'fixed';\n\tviewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth(FALSE);\n\tviewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight(FALSE);\n\tviewportScroll = { left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop() };\n\tviewportOffset = viewport.offset() || adjusted;\n\n\t// Generic calculation method\n\tfunction calculate(side, otherSide, type, adjustment, side1, side2, lengthName, targetLength, elemLength) {\n\t\tvar initialPos = position[side1],\n\t\t\tmySide = my[side],\n\t\t\tatSide = at[side],\n\t\t\tisShift = type === SHIFT,\n\t\t\tmyLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2,\n\t\t\tatLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2,\n\t\t\tsideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]),\n\t\t\toverflow1 = sideOffset - initialPos,\n\t\t\toverflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset,\n\t\t\toffset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0);\n\n\t\t// shift\n\t\tif(isShift) {\n\t\t\toffset = (mySide === side1 ? 1 : -1) * myLength;\n\n\t\t\t// Adjust position but keep it within viewport dimensions\n\t\t\tposition[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0;\n\t\t\tposition[side1] = Math.max(\n\t\t\t\t-containerOffset[side1] + viewportOffset[side1],\n\t\t\t\tinitialPos - offset,\n\t\t\t\tMath.min(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\t-containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight),\n\t\t\t\t\t\tinitialPos + offset\n\t\t\t\t\t),\n\t\t\t\t\tposition[side1],\n\n\t\t\t\t\t// Make sure we don't adjust complete off the element when using 'center'\n\t\t\t\t\tmySide === 'center' ? initialPos - myLength : 1E9\n\t\t\t\t)\n\t\t\t);\n\n\t\t}\n\n\t\t// flip/flipinvert\n\t\telse {\n\t\t\t// Update adjustment amount depending on if using flipinvert or flip\n\t\t\tadjustment *= type === FLIPINVERT ? 2 : 0;\n\n\t\t\t// Check for overflow on the left/top\n\t\t\tif(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) {\n\t\t\t\tposition[side1] -= offset + adjustment;\n\t\t\t\tnewMy.invert(side, side1);\n\t\t\t}\n\n\t\t\t// Check for overflow on the bottom/right\n\t\t\telse if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) {\n\t\t\t\tposition[side1] -= (mySide === CENTER ? -offset : offset) + adjustment;\n\t\t\t\tnewMy.invert(side, side2);\n\t\t\t}\n\n\t\t\t// Make sure we haven't made things worse with the adjustment and reset if so\n\t\t\tif(position[side1] < viewportScroll[side1] && -position[side1] > overflow2) {\n\t\t\t\tposition[side1] = initialPos; newMy = my.clone();\n\t\t\t}\n\t\t}\n\n\t\treturn position[side1] - initialPos;\n\t}\n\n\t// Set newMy if using flip or flipinvert methods\n\tif(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); }\n\n\t// Adjust position based onviewport and adjustment options\n\tadjusted = {\n\t\tleft: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,\n\t\ttop: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0,\n\t\tmy: newMy\n\t};\n\n\treturn adjusted;\n};\n;PLUGINS.polys = {\n\t// POLY area coordinate calculator\n\t//\tSpecial thanks to Ed Cradock for helping out with this.\n\t//\tUses a binary search algorithm to find suitable coordinates.\n\tpolygon: function(baseCoords, corner) {\n\t\tvar result = {\n\t\t\twidth: 0, height: 0,\n\t\t\tposition: {\n\t\t\t\ttop: 1e10, right: 0,\n\t\t\t\tbottom: 0, left: 1e10\n\t\t\t},\n\t\t\tadjustable: FALSE\n\t\t},\n\t\ti = 0, next,\n\t\tcoords = [],\n\t\tcompareX = 1, compareY = 1,\n\t\trealX = 0, realY = 0,\n\t\tnewWidth, newHeight;\n\n\t\t// First pass, sanitize coords and determine outer edges\n\t\ti = baseCoords.length; \n\t\twhile(i--) {\n\t\t\tnext = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ];\n\n\t\t\tif(next[0] > result.position.right){ result.position.right = next[0]; }\n\t\t\tif(next[0] < result.position.left){ result.position.left = next[0]; }\n\t\t\tif(next[1] > result.position.bottom){ result.position.bottom = next[1]; }\n\t\t\tif(next[1] < result.position.top){ result.position.top = next[1]; }\n\n\t\t\tcoords.push(next);\n\t\t}\n\n\t\t// Calculate height and width from outer edges\n\t\tnewWidth = result.width = Math.abs(result.position.right - result.position.left);\n\t\tnewHeight = result.height = Math.abs(result.position.bottom - result.position.top);\n\n\t\t// If it's the center corner...\n\t\tif(corner.abbrev() === 'c') {\n\t\t\tresult.position = {\n\t\t\t\tleft: result.position.left + result.width / 2,\n\t\t\t\ttop: result.position.top + result.height / 2\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\t// Second pass, use a binary search algorithm to locate most suitable coordinate\n\t\t\twhile(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0)\n\t\t\t{\n\t\t\t\tnewWidth = Math.floor(newWidth / 2);\n\t\t\t\tnewHeight = Math.floor(newHeight / 2);\n\n\t\t\t\tif(corner.x === LEFT){ compareX = newWidth; }\n\t\t\t\telse if(corner.x === RIGHT){ compareX = result.width - newWidth; }\n\t\t\t\telse{ compareX += Math.floor(newWidth / 2); }\n\n\t\t\t\tif(corner.y === TOP){ compareY = newHeight; }\n\t\t\t\telse if(corner.y === BOTTOM){ compareY = result.height - newHeight; }\n\t\t\t\telse{ compareY += Math.floor(newHeight / 2); }\n\n\t\t\t\ti = coords.length;\n\t\t\t\twhile(i--)\n\t\t\t\t{\n\t\t\t\t\tif(coords.length < 2){ break; }\n\n\t\t\t\t\trealX = coords[i][0] - result.position.left;\n\t\t\t\t\trealY = coords[i][1] - result.position.top;\n\n\t\t\t\t\tif(\n\t\t\t\t\t\tcorner.x === LEFT && realX >= compareX ||\n\t\t\t\t\t\tcorner.x === RIGHT && realX <= compareX ||\n\t\t\t\t\t\tcorner.x === CENTER && (realX < compareX || realX > result.width - compareX) ||\n\t\t\t\t\t\tcorner.y === TOP && realY >= compareY ||\n\t\t\t\t\t\tcorner.y === BOTTOM && realY <= compareY ||\n\t\t\t\t\t\tcorner.y === CENTER && (realY < compareY || realY > result.height - compareY)) {\n\t\t\t\t\t\tcoords.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.position = { left: coords[0][0], top: coords[0][1] };\n\t\t}\n\n\t\treturn result;\n\t},\n\n\trect: function(ax, ay, bx, by) {\n\t\treturn {\n\t\t\twidth: Math.abs(bx - ax),\n\t\t\theight: Math.abs(by - ay),\n\t\t\tposition: {\n\t\t\t\tleft: Math.min(ax, bx),\n\t\t\t\ttop: Math.min(ay, by)\n\t\t\t}\n\t\t};\n\t},\n\n\t_angles: {\n\t\ttc: 3 / 2, tr: 7 / 4, tl: 5 / 4,\n\t\tbc: 1 / 2, br: 1 / 4, bl: 3 / 4,\n\t\trc: 2, lc: 1, c: 0\n\t},\n\tellipse: function(cx, cy, rx, ry, corner) {\n\t\tvar c = PLUGINS.polys._angles[ corner.abbrev() ],\n\t\t\trxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ),\n\t\t\trys = ry * Math.sin( c * Math.PI );\n\n\t\treturn {\n\t\t\twidth: rx * 2 - Math.abs(rxc),\n\t\t\theight: ry * 2 - Math.abs(rys),\n\t\t\tposition: {\n\t\t\t\tleft: cx + rxc,\n\t\t\t\ttop: cy + rys\n\t\t\t},\n\t\t\tadjustable: FALSE\n\t\t};\n\t},\n\tcircle: function(cx, cy, r, corner) {\n\t\treturn PLUGINS.polys.ellipse(cx, cy, r, r, corner);\n\t}\n};\n;PLUGINS.svg = function(api, svg, corner)\n{\n\tvar elem = svg[0],\n\t\troot = $(elem.ownerSVGElement),\n\t\townerDocument = elem.ownerDocument,\n\t\tstrokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2,\n\t\tframeOffset, mtx, transformed,\n\t\tlen, next, i, points,\n\t\tresult, position;\n\n\t// Ascend the parentNode chain until we find an element with getBBox()\n\twhile(!elem.getBBox) { elem = elem.parentNode; }\n\tif(!elem.getBBox || !elem.parentNode) { return FALSE; }\n\n\t// Determine which shape calculation to use\n\tswitch(elem.nodeName) {\n\t\tcase 'ellipse':\n\t\tcase 'circle':\n\t\t\tresult = PLUGINS.polys.ellipse(\n\t\t\t\telem.cx.baseVal.value,\n\t\t\t\telem.cy.baseVal.value,\n\t\t\t\t(elem.rx || elem.r).baseVal.value + strokeWidth2,\n\t\t\t\t(elem.ry || elem.r).baseVal.value + strokeWidth2,\n\t\t\t\tcorner\n\t\t\t);\n\t\tbreak;\n\n\t\tcase 'line':\n\t\tcase 'polygon':\n\t\tcase 'polyline':\n\t\t\t// Determine points object (line has none, so mimic using array)\n\t\t\tpoints = elem.points || [\n\t\t\t\t{ x: elem.x1.baseVal.value, y: elem.y1.baseVal.value },\n\t\t\t\t{ x: elem.x2.baseVal.value, y: elem.y2.baseVal.value }\n\t\t\t];\n\n\t\t\tfor(result = [], i = -1, len = points.numberOfItems || points.length; ++i < len;) {\n\t\t\t\tnext = points.getItem ? points.getItem(i) : points[i];\n\t\t\t\tresult.push.apply(result, [next.x, next.y]);\n\t\t\t}\n\n\t\t\tresult = PLUGINS.polys.polygon(result, corner);\n\t\tbreak;\n\n\t\t// Unknown shape or rectangle? Use bounding box\n\t\tdefault:\n\t\t\tresult = elem.getBBox();\n\t\t\tresult = {\n\t\t\t\twidth: result.width,\n\t\t\t\theight: result.height,\n\t\t\t\tposition: {\n\t\t\t\t\tleft: result.x,\n\t\t\t\t\ttop: result.y\n\t\t\t\t}\n\t\t\t};\n\t\tbreak;\n\t}\n\n\t// Shortcut assignments\n\tposition = result.position;\n\troot = root[0];\n\n\t// Convert position into a pixel value\n\tif(root.createSVGPoint) {\n\t\tmtx = elem.getScreenCTM();\n\t\tpoints = root.createSVGPoint();\n\n\t\tpoints.x = position.left;\n\t\tpoints.y = position.top;\n\t\ttransformed = points.matrixTransform( mtx );\n\t\tposition.left = transformed.x;\n\t\tposition.top = transformed.y;\n\t}\n\n\t// Check the element is not in a child document, and if so, adjust for frame elements offset\n\tif(ownerDocument !== document && api.position.target !== 'mouse') {\n\t\tframeOffset = $((ownerDocument.defaultView || ownerDocument.parentWindow).frameElement).offset();\n\t\tif(frameOffset) {\n\t\t\tposition.left += frameOffset.left;\n\t\t\tposition.top += frameOffset.top;\n\t\t}\n\t}\n\n\t// Adjust by scroll offset of owner document\n\townerDocument = $(ownerDocument);\n\tposition.left += ownerDocument.scrollLeft();\n\tposition.top += ownerDocument.scrollTop();\n\n\treturn result;\n};\n;PLUGINS.imagemap = function(api, area, corner)\n{\n\tif(!area.jquery) { area = $(area); }\n\n\tvar shape = (area.attr('shape') || 'rect').toLowerCase().replace('poly', 'polygon'),\n\t\timage = $('img[usemap=\"#'+area.parent('map').attr('name')+'\"]'),\n\t\tcoordsString = $.trim(area.attr('coords')),\n\t\tcoordsArray = coordsString.replace(/,$/, '').split(','),\n\t\timageOffset, coords, i, result, len;\n\n\t// If we can't find the image using the map...\n\tif(!image.length) { return FALSE; }\n\n\t// Pass coordinates string if polygon\n\tif(shape === 'polygon') {\n\t\tresult = PLUGINS.polys.polygon(coordsArray, corner);\n\t}\n\n\t// Otherwise parse the coordinates and pass them as arguments\n\telse if(PLUGINS.polys[shape]) {\n\t\tfor(i = -1, len = coordsArray.length, coords = []; ++i < len;) {\n\t\t\tcoords.push( parseInt(coordsArray[i], 10) );\n\t\t}\n\n\t\tresult = PLUGINS.polys[shape].apply(\n\t\t\tthis, coords.concat(corner)\n\t\t);\n\t}\n\n\t// If no shapre calculation method was found, return false\n\telse { return FALSE; }\n\n\t// Make sure we account for padding and borders on the image\n\timageOffset = image.offset();\n\timageOffset.left += Math.ceil((image.outerWidth(FALSE) - image.width()) / 2);\n\timageOffset.top += Math.ceil((image.outerHeight(FALSE) - image.height()) / 2);\n\n\t// Add image position to offset coordinates\n\tresult.position.left += imageOffset.left;\n\tresult.position.top += imageOffset.top;\n\n\treturn result;\n};\n;var IE6,\n\n/*\n * BGIFrame adaption (http://plugins.jquery.com/project/bgiframe)\n * Special thanks to Brandon Aaron\n */\nBGIFRAME = '';\n\nfunction Ie6(api) {\n\tthis._ns = 'ie6';\n\n\tthis.qtip = api;\n\tthis.init(api);\n}\n\n$.extend(Ie6.prototype, {\n\t_scroll : function() {\n\t\tvar overlay = this.qtip.elements.overlay;\n\t\toverlay && (overlay[0].style.top = $(window).scrollTop() + 'px');\n\t},\n\n\tinit: function(qtip) {\n\t\tvar tooltip = qtip.tooltip;\n\n\t\t// Create the BGIFrame element if needed\n\t\tif($('select, object').length < 1) {\n\t\t\tthis.bgiframe = qtip.elements.bgiframe = $(BGIFRAME).appendTo(tooltip);\n\n\t\t\t// Update BGIFrame on tooltip move\n\t\t\tqtip._bind(tooltip, 'tooltipmove', this.adjustBGIFrame, this._ns, this);\n\t\t}\n\n\t\t// redraw() container for width/height calculations\n\t\tthis.redrawContainer = $('
      ', { id: NAMESPACE+'-rcontainer' })\n\t\t\t.appendTo(document.body);\n\n\t\t// Fixup modal plugin if present too\n\t\tif( qtip.elements.overlay && qtip.elements.overlay.addClass('qtipmodal-ie6fix') ) {\n\t\t\tqtip._bind(window, ['scroll', 'resize'], this._scroll, this._ns, this);\n\t\t\tqtip._bind(tooltip, ['tooltipshow'], this._scroll, this._ns, this);\n\t\t}\n\n\t\t// Set dimensions\n\t\tthis.redraw();\n\t},\n\n\tadjustBGIFrame: function() {\n\t\tvar tooltip = this.qtip.tooltip,\n\t\t\tdimensions = {\n\t\t\t\theight: tooltip.outerHeight(FALSE),\n\t\t\t\twidth: tooltip.outerWidth(FALSE)\n\t\t\t},\n\t\t\tplugin = this.qtip.plugins.tip,\n\t\t\ttip = this.qtip.elements.tip,\n\t\t\ttipAdjust, offset;\n\n\t\t// Adjust border offset\n\t\toffset = parseInt(tooltip.css('borderLeftWidth'), 10) || 0;\n\t\toffset = { left: -offset, top: -offset };\n\n\t\t// Adjust for tips plugin\n\t\tif(plugin && tip) {\n\t\t\ttipAdjust = plugin.corner.precedance === 'x' ? [WIDTH, LEFT] : [HEIGHT, TOP];\n\t\t\toffset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ]();\n\t\t}\n\n\t\t// Update bgiframe\n\t\tthis.bgiframe.css(offset).css(dimensions);\n\t},\n\n\t// Max/min width simulator function\n\tredraw: function() {\n\t\tif(this.qtip.rendered < 1 || this.drawing) { return this; }\n\n\t\tvar tooltip = this.qtip.tooltip,\n\t\t\tstyle = this.qtip.options.style,\n\t\t\tcontainer = this.qtip.options.position.container,\n\t\t\tperc, width, max, min;\n\n\t\t// Set drawing flag\n\t\tthis.qtip.drawing = 1;\n\n\t\t// If tooltip has a set height/width, just set it... like a boss!\n\t\tif(style.height) { tooltip.css(HEIGHT, style.height); }\n\t\tif(style.width) { tooltip.css(WIDTH, style.width); }\n\n\t\t// Simulate max/min width if not set width present...\n\t\telse {\n\t\t\t// Reset width and add fluid class\n\t\t\ttooltip.css(WIDTH, '').appendTo(this.redrawContainer);\n\n\t\t\t// Grab our tooltip width (add 1 if odd so we don't get wrapping problems.. huzzah!)\n\t\t\twidth = tooltip.width();\n\t\t\tif(width % 2 < 1) { width += 1; }\n\n\t\t\t// Grab our max/min properties\n\t\t\tmax = tooltip.css('maxWidth') || '';\n\t\t\tmin = tooltip.css('minWidth') || '';\n\n\t\t\t// Parse into proper pixel values\n\t\t\tperc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0;\n\t\t\tmax = (max.indexOf('%') > -1 ? perc : 1 * parseInt(max, 10)) || width;\n\t\t\tmin = (min.indexOf('%') > -1 ? perc : 1 * parseInt(min, 10)) || 0;\n\n\t\t\t// Determine new dimension size based on max/min/current values\n\t\t\twidth = max + min ? Math.min(Math.max(width, min), max) : width;\n\n\t\t\t// Set the newly calculated width and remvoe fluid class\n\t\t\ttooltip.css(WIDTH, Math.round(width)).appendTo(container);\n\t\t}\n\n\t\t// Set drawing flag\n\t\tthis.drawing = 0;\n\n\t\treturn this;\n\t},\n\n\tdestroy: function() {\n\t\t// Remove iframe\n\t\tthis.bgiframe && this.bgiframe.remove();\n\n\t\t// Remove bound events\n\t\tthis.qtip._unbind([window, this.qtip.tooltip], this._ns);\n\t}\n});\n\nIE6 = PLUGINS.ie6 = function(api) {\n\t// Proceed only if the browser is IE6\n\treturn BROWSER.ie === 6 ? new Ie6(api) : FALSE;\n};\n\nIE6.initialize = 'render';\n\nCHECKS.ie6 = {\n\t'^content|style$': function() {\n\t\tthis.redraw();\n\t}\n};\n;}));\n}( window, document ));\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport '@okta/qtip';\nimport BaseView from '../../BaseView.js';\n\n/**\n * @class InputLabel\n * @extends {Okta.View}\n * @private\n * The input's label.\n */\nvar InputLabel = BaseView.extend({\n className: 'okta-form-label o-form-label',\n attributes: {\n 'data-se': 'o-form-label'\n },\n\n /**\n * @constructor\n * @param {Object} options options hash\n * @param {String} [options.type] Input type\n * @param {String|Function} [options.label] Label text\n * @param {String|Function} [options.sublabel] Sub label text\n * @param {String|Function} [options.tooltip] Tooltip text\n * @param {String|Function} [options.inputId] Id of the inputs\n * @param {String|Function} [options.id] Id of the inputs\n */\n constructor: function (options) {\n /* eslint max-statements: [2, 16] complexity: [2, 7]*/\n oktaUnderscore.defaults(options, {\n inputId: options.id\n });\n\n delete options.id;\n BaseView.apply(this, arguments);\n },\n // standardLabel: space added in the end of the label to avoid selecting label text with double click in read mode\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"label\") || (depth0 != null ? lookupProperty(depth0, \"label\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"label\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 116\n },\n \"end\": {\n \"line\": 1,\n \"column\": 125\n }\n }\n }) : helper));\n },\n \"7\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"9\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"sublabel\") || (depth0 != null ? lookupProperty(depth0, \"sublabel\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"sublabel\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 256\n },\n \"end\": {\n \"line\": 1,\n \"column\": 268\n }\n }\n }) : helper)) + \"\";\n },\n \"11\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"13\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"group\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 28\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"_isLabelView\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 28\n },\n \"end\": {\n \"line\": 1,\n \"column\": 89\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"_isRadioOrCheckbox\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 89\n },\n \"end\": {\n \"line\": 1,\n \"column\": 132\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"_standardLabel\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(7, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 132\n },\n \"end\": {\n \"line\": 1,\n \"column\": 210\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"sublabel\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(9, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 210\n },\n \"end\": {\n \"line\": 1,\n \"column\": 282\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"tooltip\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(11, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 282\n },\n \"end\": {\n \"line\": 1,\n \"column\": 397\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"group\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(13, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 397\n },\n \"end\": {\n \"line\": 1,\n \"column\": 426\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n }),\n getTemplateData: function () {\n const options = {\n label: ''\n };\n\n oktaUnderscore.each(['inputId', 'label', 'sublabel', 'tooltip', 'group'], function (option) {\n options[option] = oktaUnderscore.resultCtx(this.options, option, this);\n }, this);\n\n if (this._isLabelView(options.label)) {\n options._isLabelView = true;\n } else if (oktaUnderscore.contains(['radio', 'checkbox'], this.options.type) || !options.label) {\n options._isRadioOrCheckbox = true;\n } else {\n options._standardLabel = true;\n }\n\n if (options.tooltip) {\n if (oktaUnderscore.isString(options.tooltip)) {\n options.tooltip = {\n text: options.tooltip\n };\n }\n }\n\n return options;\n },\n _isLabelView: function (label) {\n return !oktaUnderscore.isUndefined(label) && label instanceof BaseView;\n },\n postRender: function () {\n const options = this.getTemplateData();\n\n if (this._isLabelView(options.label)) {\n this.removeChildren();\n this.add(options.label, 'label');\n }\n\n if (options.tooltip) {\n this.$('.o-form-tooltip').qtip(oktaUnderscore.extend({\n style: {\n classes: 'qtip-custom qtip-shadow'\n },\n position: {\n my: window.okta && window.okta.theme === 'dstheme' ? 'bottom center' : 'bottom left',\n at: 'top center'\n },\n hide: {\n fixed: true\n },\n show: {\n delay: 0\n }\n }, options.tooltip.options));\n }\n }\n});\n\nexport { InputLabel as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport BaseView from '../../BaseView.js';\nimport FormUtil from './FormUtil.js';\n\nfunction runCallback(callback, field) {\n callback.apply(this, oktaUnderscore.map(field.split(/\\s+/), function (field) {\n return this.model.get(field);\n }, this));\n}\n\nfunction runIf(fn, ctx) {\n if (oktaUnderscore.isFunction(fn)) {\n fn.call(ctx);\n }\n}\n/**\n * @class InputWrapper\n * @extends Okta.View\n * @private\n * The outer wrapper that warps the label and the input container\n */\n\n\nvar InputWrapper = BaseView.extend({\n tagName: function () {\n if (this.options.group) {\n return 'fieldset';\n }\n\n return 'div';\n },\n className: function () {\n let className = 'o-form-fieldset';\n\n if (this.options['label-top']) {\n className += ' o-form-label-top';\n }\n\n if (this.options.readOnly) {\n className += ' o-form-read-mode';\n }\n\n return className;\n },\n attributes: function () {\n return {\n 'data-se': this.options['data-se'] || 'o-form-fieldset'\n };\n },\n\n /**\n * @constructor\n * @param {Object} options options hash\n * @param {Object} [options.events]\n * @param {Object} [options.bindings]\n * @param {Object} [options.showWhen]\n * @param {Function} [options.initialize] post initialize callback\n * @param {Function} [options.render] post render callback\n */\n constructor: function (options) {\n if (options.className) {\n this.inputWrapperClassName = this.className;\n this.optionsClassName = options.className;\n\n options.className = function () {\n return oktaUnderscore.result(this, 'inputWrapperClassName', '') + ' ' + oktaUnderscore.result(this, 'optionsClassName');\n };\n }\n\n BaseView.apply(this, arguments);\n\n oktaUnderscore.each(options.events || {}, function (callback, event) {\n this.listenTo(this.model, event, callback);\n }, this);\n\n oktaUnderscore.each(options.bindings || {}, function (callback, field) {\n this.listenTo(this.model, FormUtil.changeEventString(field.split(/\\s+/)), oktaUnderscore.bind(runCallback, this, callback, field));\n }, this);\n\n FormUtil.applyShowWhen(this, options.showWhen);\n FormUtil.applyToggleWhen(this, options.toggleWhen);\n runIf(options.initialize, this);\n },\n postRender: function () {\n oktaUnderscore.each(this.options.bindings || {}, runCallback, this);\n\n runIf(this.options.render, this);\n },\n\n /**\n * @return {InputLabel}\n */\n getLabel: function () {\n return this.size() > 1 ? this.at(0) : null;\n },\n\n /**\n * @deprecated ambiguous naming, use {@link #getInputContainer}\n */\n getInput: function () {\n return this.getInputContainer();\n },\n\n /**\n * @return {InputContainer}\n */\n getInputContainer: function () {\n return this.at(this.size() > 1 ? 1 : 0);\n },\n\n /**\n * @return {BaseInput[]}\n */\n getInputs: function () {\n return this.getInputContainer().toArray();\n },\n focus: function () {\n return this.getInput().focus();\n }\n});\n\nexport { InputWrapper as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport StringUtil from '../../util/StringUtil.js';\nimport BaseView from '../BaseView.js';\nimport ReadModeBar from './components/ReadModeBar.js';\nimport Toolbar from './components/Toolbar.js';\nimport ErrorBanner from './helpers/ErrorBanner.js';\nimport ErrorParser from './helpers/ErrorParser.js';\nimport FormUtil from './helpers/FormUtil.js';\nimport InputContainer from './helpers/InputContainer.js';\nimport InputFactory from './helpers/InputFactory.js';\nimport InputLabel from './helpers/InputLabel.js';\nimport InputWrapper from './helpers/InputWrapper.js';\nimport SettingsModel from '../../util/SettingsModel.js';\n\nconst template = _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 75\n },\n \"end\": {\n \"line\": 1,\n \"column\": 84\n }\n }\n }) : helper)) + \"

      \";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return (stack1 = lookupProperty(helpers, \"if\").call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(4, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 192\n },\n \"end\": {\n \"line\": 1,\n \"column\": 288\n }\n }\n })) != null ? stack1 : \"\";\n },\n \"4\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 267\n },\n \"end\": {\n \"line\": 1,\n \"column\": 276\n }\n }\n }) : helper)) + \"

      \";\n },\n \"6\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"subtitle\") || (depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"subtitle\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 385\n },\n \"end\": {\n \"line\": 1,\n \"column\": 397\n }\n }\n }) : helper)) + \"

      \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"hasReadMode\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 96\n }\n }\n })) != null ? stack1 : \"\") + \"
      \" + ((stack1 = lookupProperty(helpers, \"unless\").call(alias1, depth0 != null ? lookupProperty(depth0, \"hasReadMode\") : depth0, {\n \"name\": \"unless\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 169\n },\n \"end\": {\n \"line\": 1,\n \"column\": 299\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(6, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 299\n },\n \"end\": {\n \"line\": 1,\n \"column\": 408\n }\n }\n })) != null ? stack1 : \"\") + \"
      \";\n },\n \"useData\": true\n});\n\nconst sectionTitleTemplate = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

      \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 24\n },\n \"end\": {\n \"line\": 1,\n \"column\": 33\n }\n }\n }) : helper)) + \"

      \";\n },\n \"useData\": true\n});\n\nconst pointerEventsSupported = oktaJQueryStatic('
      ').css({\n 'pointer-events': 'auto'\n})[0].style.pointerEvents === 'auto'; // polyfill for `pointer-events: none;` in IE < 11\n// Logic borrowed from https://github.com/kmewhort/pointer_events_polyfill (BSD)\n\nfunction pointerEventsPolyfill(e) {\n if (!pointerEventsSupported && this.$el.hasClass('o-form-saving')) {\n const $el = oktaJQueryStatic(e.currentTarget);\n $el.css('display', 'none');\n const underneathElem = document.elementFromPoint(e.clientX, e.clientY);\n $el.css('display', 'block');\n e.target = underneathElem;\n oktaJQueryStatic(underneathElem).trigger(e);\n return false;\n }\n}\n\nconst events = {\n submit: function (e) {\n e.preventDefault();\n\n this.__save();\n }\n};\n\noktaUnderscore.each(['click', 'dblclick', 'mousedown', 'mouseup'], function (event) {\n events[event + ' .o-form-input'] = pointerEventsPolyfill;\n});\n\nconst attributes = function (model) {\n model || (model = {});\n const collection = model && model.collection || {};\n return {\n method: 'POST',\n action: oktaUnderscore.result(model, 'urlRoot') || oktaUnderscore.result(collection, 'url') || window.location.pathname,\n 'data-se': 'o-form',\n slot: 'content'\n };\n};\n\nconst convertSavingState = function (rawSavingStateEvent, defaultEvent) {\n rawSavingStateEvent || (rawSavingStateEvent = '');\n let savingStateEvent = [];\n\n if (oktaUnderscore.isString(rawSavingStateEvent)) {\n savingStateEvent = rawSavingStateEvent.split(' ');\n }\n\n savingStateEvent = oktaUnderscore.union(savingStateEvent, defaultEvent);\n return savingStateEvent.join(' ');\n};\n\nconst getErrorSummary = function (responseJSON = {}) {\n if (Array.isArray(responseJSON.errorCauses) && responseJSON.errorCauses.length > 0) {\n //set errorSummary from first errorCause which is not field specific error\n return responseJSON.errorCauses[0].errorSummary;\n } else {\n //set errorSummary from top level errorSummary\n return responseJSON.errorSummary;\n }\n};\n/**\n * A Form utility framework\n *\n * Okta.Form is a form that operates on one flat model\n * It exposes one main factory method, {@link module:Okta.Form#addInput|addInput}, which add inputs to the form,\n * and each input operates on one field in the model, identified by the `name` field.\n *\n * See:\n * [Basic O-Form Tutorial](https://github.com/okta/courage/wiki/Basic-O-Form)\n *\n * @class module:Okta.Form\n * @extends module:Okta.View\n * @param {Object} options options hash (See {@link module:Okta.View|View})\n * @param {Object} options.model the model this form operates on\n * @param {Boolean} [options.label-top=false] position label on top of inputs\n * @param {Boolean} [options.wide=false] Use a wide input layout for all input\n */\n\n/**\n * Fired when the \"Save\" button is clicked\n * @event module:Okta.Form#save\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired after the model is successfully saved - applies when {@link module:Okta.Form#autoSave|autoSave}\n * is set to true\n * @event module:Okta.Form#saved\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the model fires an invalid event or an error event;\n * @event module:Okta.Form#error\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the form layout is likely to be resized\n * @event module:Okta.Form#resize\n * @param {module:Okta.Model} model Model used in the form\n */\n\n/**\n * Fired when the \"Cancel\" button is clicked\n * @event module:Okta.Form#cancel\n */\n\n\nvar BaseForm = BaseView.extend(\n/** @lends module:Okta.Form.prototype */\n{\n /**\n * Specifies how to validate form:\n * - In case \"local\" string provided as a value of the property,\n * the form will validate only fields added as inputs to the form;\n * - In case array is provided, the validation will be performed only for fields specified in array;\n * - In case function is provided, provided function will be used as a validation function,\n * it must return an error object with the format {fieldName: 'error text'} with as many fields as you need.\n * @name validate\n * @memberof module:Okta.Form\n * @type {String|Array|Function}\n * @instance\n */\n constructor: function (options) {\n /* eslint max-statements: 0, complexity: 0 */\n options || (options = {});\n this.options = options;\n\n if (options.settings) {\n this.settings = options.settings;\n } else {\n this.settings = options.settings = new SettingsModel();\n }\n\n this.id = oktaUnderscore.uniqueId('form');\n this.tagName = 'form';\n\n oktaUnderscore.defaults(this.events, events);\n\n oktaUnderscore.defaults(this.attributes, attributes(options.model));\n\n this.__buttons = [];\n this.__errorFields = {};\n\n this.__saveModelState(options.model);\n\n const step = oktaUnderscore.result(this, 'step');\n\n if (step) {\n // checking exists of `this.save` hence don't have to change to\n // `_.result(this, 'save')` which will execute the function and\n // is not the intent.\n if (!this.save) {\n const totalStep = oktaUnderscore.result(this, 'totalSteps');\n\n this.save = !totalStep || step === totalStep ? StringUtil.localize('oform.button.finish', 'courage') : StringUtil.localize('oform.button.next', 'courage');\n }\n\n this.className = oktaUnderscore.result(this, 'className') + ' wizard';\n }\n\n this.className = oktaUnderscore.result(this, 'className') + ' o-form';\n this.__toolbar = this.__createToolbar(options);\n BaseView.call(this, options);\n\n oktaUnderscore.each(oktaUnderscore.result(this, 'inputs') || [], function (input) {\n // to ingore extra argumests from `each` iteratee function\n // http://underscorejs.org/#each\n this.__addLayoutItem(input);\n }, this);\n\n this.add(this.__toolbar, ''); // NOTES: this.model shall be initialized after calling\n // super (BaseView.call(this, options)) above.\n //\n\n this.listenTo(this.model, 'change:__edit__', this.__applyMode);\n this.listenTo(this.model, 'invalid error', oktaUnderscore.throttle(function (model, resp, showBanner) {\n this.__showErrors(model, resp, showBanner !== false);\n }, 100, {\n trailing: false\n }));\n this.listenTo(this.model, 'form:resize', function () {\n this.trigger('resize');\n });\n this.listenTo(this.model, 'form:cancel', oktaUnderscore.throttle(this.__cancel, 100, {\n trailing: false\n }));\n this.listenTo(this.model, 'form:previous', oktaUnderscore.throttle(this.__previous, 100, {\n trailing: false\n }));\n this.__save = oktaUnderscore.throttle(this.__save, 200, {\n trailing: false\n });\n this.listenTo(this.model, 'form:save', function () {\n this.$el.submit();\n });\n this.listenTo(this.model, 'sync', function () {\n if (this.model.get('__edit__')) {\n this.model.set('__edit__', false, {\n silent: true\n });\n }\n\n this.__saveModelState(this.model);\n\n this.render();\n });\n let hasSavingState = this.getAttribute('hasSavingState');\n\n if (this.getAttribute('autoSave')) {\n this.listenTo(this, 'save', function (model) {\n const xhr = model.save();\n\n if (xhr && xhr.done) {\n xhr.done(() => {\n this.trigger('saved', model);\n });\n }\n });\n\n if (oktaUnderscore.isUndefined(hasSavingState)) {\n hasSavingState = true;\n }\n }\n /*\n * Attach model event listeners\n * by default, model's request event starts the form saving state,\n * error and sync event stops it\n * you can define customized saving start and stop state, like\n * customSavingState: {start: 'requestingAdditionalInfo', stop: 'retrievedAdditionalInfo'}\n * doing this does not override the default events\n */\n\n\n if (hasSavingState) {\n const customSavingState = this.getAttribute('customSavingState', {});\n this.listenTo(this.model, convertSavingState(customSavingState.start || '', ['request']), this.__setSavingState);\n this.listenTo(this.model, convertSavingState(customSavingState.stop || '', ['error', 'sync']), this.__clearSavingState);\n }\n },\n\n /**\n * Create the bottom button bar\n * @param {Object} options options h\n * @return {Okta.View} The toolbar\n * @private\n */\n __createToolbar: function (options) {\n const danger = this.getAttribute('danger');\n const saveBtnClassName = danger === true ? 'button-error' : 'button-primary';\n\n const step = oktaUnderscore.result(this, 'step');\n\n const toolbar = new Toolbar(oktaUnderscore.extend({\n save: this.save || StringUtil.localize('oform.save', 'courage'),\n saveId: this.saveId,\n saveClassName: saveBtnClassName,\n cancel: this.cancel || StringUtil.localize('oform.cancel', 'courage'),\n noCancelButton: this.noCancelButton || false,\n noSubmitButton: this.noSubmitButton || false,\n buttonOrder: this.buttonOrder,\n hasPrevStep: step && step > 1\n }, options || this.options));\n\n oktaUnderscore.each(this.__buttons, function (args) {\n toolbar.addButton.apply(toolbar, args);\n });\n\n return toolbar;\n },\n className: '',\n attributes: {},\n events: {},\n\n /**\n * An array of input configurations to render in the form\n * @type {Array}\n */\n inputs: [],\n template: null,\n\n /**\n * Does the form support read/edit toggle.\n * @type {Boolean|Function}\n * @default false\n */\n read: false,\n\n /**\n * Is the form in readOnly mode.\n * @type {Boolean|Function}\n * @default false\n */\n readOnly: false,\n\n /**\n * Should we not render the button bar\n * @type {Boolean|Function}\n * @default false\n */\n noButtonBar: false,\n\n /**\n * Should we not render a cancel button\n * @type {Boolean|Function}\n * @default false\n */\n noCancelButton: false,\n\n /**\n * Should we not render a save button\n * @type {Boolean}\n * @default false\n */\n noSubmitButton: false,\n\n /**\n * Set the order of the save, cancel and previous buttons (left to right).\n * @type {Array.}\n * @default ['previous', 'save', 'cancel']\n */\n buttonOrder: ['previous', 'save', 'cancel'],\n\n /**\n * The text on the save button\n * @type {String}\n * @default \"Save\"\n */\n save: null,\n\n /**\n * The text on the cancel button\n * @type {String}\n * @default \"Cancel\"\n */\n cancel: null,\n\n /**\n * To use button-error to style the submit button instead of button-primary.\n * @type {Boolean|Function}\n * @default false\n */\n danger: false,\n\n /**\n * A layout CSS class to add to the form\n * @type {String|Function}\n * @default \"\"\n */\n layout: '',\n\n /**\n * The step this form is in the context of a wizard\n * @type {Number}\n */\n step: undefined,\n\n /**\n * The total numbers of steps the wizard this form is a part of has\n * @type {Number}\n */\n totalSteps: undefined,\n\n /**\n * The form's title\n * @type {String|Function}\n */\n title: null,\n\n /**\n * The form's subtitle\n * @type {String|Function}\n */\n subtitle: null,\n\n /**\n * Auto-save the model when hitting save. Triggers a `saved` event when done\n * @type {Boolean}\n * @default false\n */\n autoSave: false,\n\n /**\n * Scroll to the top of the form on error\n * @type {Boolean|Function}\n * @default true\n */\n scrollOnError: true,\n\n /**\n * Show the error banner upon error\n * @type {Boolean|Function}\n * @default true\n */\n showErrors: true,\n\n /**\n * The form's scrollable area\n * @type {String}\n * @default \".o-form-content\"\n */\n resizeSelector: '.o-form-content',\n\n /**\n * Sets whether or not the form shows the saving state when\n * the model is saved. Has no effect on setSavingState and clearSavingState as those are manual calls\n * to trigger/clear the saving state.\n * @name hasSavingState\n * @memberof module:Okta.Form\n * @type {Boolean}\n * @default false\n * @instance\n */\n\n /**\n * Get an attribute value from options or instance.\n * Prefer options value over instance value\n * @param {String} name Name of the attribute\n * @param {Object} defaultValue the default value to return if the attribute is not found\n * @return {Object} The value\n */\n getAttribute: function (name, defaultValue) {\n let value = oktaUnderscore.resultCtx(this.options, name, this);\n\n if (oktaUnderscore.isUndefined(value)) {\n value = oktaUnderscore.result(this, name);\n }\n\n return !oktaUnderscore.isUndefined(value) ? value : defaultValue;\n },\n\n /**\n * Does this form have a \"read\" mode\n * @return {Boolean}\n */\n hasReadMode: function () {\n return !!this.getAttribute('read');\n },\n\n /**\n * Is this form in \"read only\" mode\n * @return {Boolean}\n */\n isReadOnly: function () {\n return !!this.getAttribute('readOnly');\n },\n\n /**\n * Does this form have a button bar\n * @return {Boolean}\n */\n hasButtonBar: function () {\n return !(this.getAttribute('noButtonBar') || this.isReadOnly());\n },\n render: function () {\n this.__readModeBar && this.__readModeBar.remove();\n\n if (this.hasReadMode() && !this.isReadOnly()) {\n const readModeBar = ReadModeBar.extend({\n formTitle: this.getAttribute('title', '')\n });\n this.__readModeBar = this.add(readModeBar, '.o-form-title-bar').last();\n }\n\n const html = template({\n layout: this.getAttribute('layout', ''),\n title: this.getAttribute('title', '', true),\n subtitle: this.getAttribute('subtitle', '', true),\n hasReadMode: this.hasReadMode()\n });\n this.$el.html(html);\n delete this.template;\n BaseView.prototype.render.apply(this, arguments);\n\n this.__applyMode();\n\n return this;\n },\n\n /**\n * Changes form UI to indicate saving. Disables all inputs and buttons. Use this function if you have set\n * hasSavingState to false on the the form\n * @private\n */\n __setSavingState: function () {\n this.model.trigger('form:set-saving-state');\n this.$el.addClass('o-form-saving');\n },\n\n /**\n * Changes form UI back to normal from the saving state. Use this function if you are have set hasSavingState\n * to false on the form\n * @private\n */\n __clearSavingState: function () {\n this.model.trigger('form:clear-saving-state');\n this.$el.removeClass('o-form-saving');\n },\n\n /**\n * Toggles the visibility of the bottom button bar\n * @private\n */\n __toggleToolbar: function () {\n this.__toolbar && this.__toolbar.remove();\n\n if (this.hasButtonBar() && this._editMode()) {\n this.__toolbar = this.__createToolbar();\n this.add(this.__toolbar, '');\n }\n\n this.trigger('resize');\n },\n\n /**\n * Cancels this form\n * - Reset the model to the previous state\n * - Clears all errors\n * - Triggers a `cancel` event\n * - Sets the model to read mode (if applicable)\n * @private\n * @fires cancel\n */\n __cancel: function () {\n const edit = this.model.get('__edit__');\n /* eslint max-statements: [2, 12] */\n\n this.model.clear({\n silent: true\n });\n let data;\n\n if (this.model.sanitizeAttributes) {\n data = this.model.sanitizeAttributes(this.__originalModel);\n } else {\n data = oktaUnderscore.clone(this.__originalModel);\n }\n\n this.model.set(data, {\n silent: true\n });\n this.trigger('cancel', this.model);\n this.model.trigger('cache:clear');\n\n if (edit) {\n this.model.set('__edit__', false, {\n silent: true\n });\n this.model.trigger('change:__edit__', this.model, false);\n }\n\n this.clearErrors();\n },\n\n /**\n * Runs {@link module:Okta.Form#validate|validate} to check the model state.\n * Triggers an \"invalid\" event on the model if validation fails\n * @returns {Boolean}\n */\n isValid: function () {\n let res;\n const self = this;\n\n function validateArray(arr) {\n return oktaUnderscore.reduce(arr, function (memo, fieldName) {\n return oktaUnderscore.extend(memo, self.model.validateField(fieldName));\n }, {});\n }\n\n if (oktaUnderscore.isUndefined(this.validate)) {\n return this.model.isValid();\n } else if (oktaUnderscore.isFunction(this.validate)) {\n res = this.validate();\n } else if (oktaUnderscore.isArray(this.validate)) {\n res = validateArray(this.validate);\n } else if (this.validate === 'local') {\n res = validateArray(this.getInputs().map(function (input) {\n return input.options.name;\n }));\n }\n\n if (!oktaUnderscore.isEmpty(res)) {\n this.model.trigger('invalid', this.model, res);\n return false;\n } else {\n return true;\n }\n },\n\n /**\n * A throttled function that saves the form not more than once every 100 ms\n * Basically all this method does is trigger a `save` event\n * @fires save\n * @private\n */\n __save: function () {\n this.clearErrors();\n\n if (this.isValid()) {\n this.trigger('save', this.model);\n }\n },\n\n /**\n * In the context of a wizard, go to previous state\n * Technically all this method does is trigger a `previous` event\n * @param {Event} e\n * @private\n */\n __previous: function () {\n this.trigger('previous', this.model);\n },\n\n /**\n * Renders the form in the correct mode based on the model.\n * @private\n */\n __applyMode: function () {\n this.clearErrors();\n\n this.__toggleToolbar();\n\n if (this._editMode()) {\n this.$el.addClass('o-form-edit-mode');\n this.$el.removeClass('o-form-read-mode');\n this.$('.o-form-content').removeClass('rounded-btm-4');\n this.focus();\n } else {\n this.$el.removeClass('o-form-edit-mode');\n this.$el.addClass('o-form-read-mode');\n this.$('.o-form-content').addClass('rounded-btm-4');\n }\n },\n\n /**\n * Is the form in edit mode\n * @return {Boolean}\n * @private\n */\n _editMode: function () {\n return this.model.get('__edit__') || !this.hasReadMode();\n },\n\n /**\n * Function can be overridden to alter top level error summary.\n * @param {Object} responseJSON\n *\n * @example\n * // responseJSON object\n * {\n * errorCauses: [{errorSummary: \"At least one of Proxy Status, Location, or ASN should be configured.\"}]\n * errorSummary: \"At least one of Proxy Status, Location, or ASN should be configured.\"\n * errorCode: \"E0000001\"\n * errorId: \"oaepsrTCHrhT-eIi8XTm6KWWg\"\n * errorLink: \"E0000001\"\n * errorSummary: \"Api validation failed: networkZone\"\n * }\n *\n * @method\n * @default _.identity\n */\n parseErrorMessage: oktaUnderscore.identity,\n _handleErrorScroll: function () {\n if (!this.getAttribute('scrollOnError')) {\n return;\n }\n\n const $el = oktaJQueryStatic('#' + this.id + ' .o-form-error-container');\n\n if ($el.length) {\n let $scrollContext = $el.scrollParent();\n let scrollTop; // scrollParent was almost awesome...\n // but it returns document if there are no other scrollable parents\n // document does not have offset, so here we have to replace with html, body\n // Additionally when the scroll context is html, body, $el.offset().top is fixed\n // versus when it has a different scroll context it's dynamic and requires the\n // calculation below.\n\n if ($scrollContext[0] === document) {\n $scrollContext = oktaJQueryStatic('html, body');\n scrollTop = $el.offset().top;\n } else {\n scrollTop = $scrollContext.scrollTop() + $el.offset().top - $scrollContext.offset().top;\n }\n\n $scrollContext.animate({\n scrollTop: scrollTop\n }, 400);\n }\n },\n\n /**\n * Show an error message based on an XHR error\n * @param {Okta.BaseModel} model the model\n * @param {jqXHR} xhr The jQuery XmlHttpRequest Object\n * @private\n */\n __showErrors: function (model, resp, showBanner) {\n this.trigger('error', model);\n /* eslint max-statements: 0 */\n\n if (!this.getAttribute('showErrors')) {\n return;\n }\n\n let errorSummary;\n let responseJSON = ErrorParser.getResponseJSON(resp);\n const validationErrors = ErrorParser.parseFieldErrors(resp); // trigger events for field validation errors\n\n if (oktaUnderscore.size(validationErrors)) {\n oktaUnderscore.each(validationErrors, function (errors, field) {\n this.model.trigger('form:field-error', this.__errorFields[field] || field, oktaUnderscore.map(errors, function (error) {\n return /^model\\.validation/.test(error) ? StringUtil.localize(error, 'courage') : error;\n }));\n }, this);\n } else {\n responseJSON = this.parseErrorMessage(responseJSON);\n errorSummary = getErrorSummary(responseJSON);\n } // show the error message\n\n\n if (showBanner) {\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(ErrorBanner, '.o-form-error-container', {\n options: {\n errorSummary: errorSummary\n }\n });\n } // slide to and focus on the error message\n\n\n this._handleErrorScroll();\n\n this.model.trigger('form:resize');\n },\n\n /**\n * Clears the error banner\n * @private\n */\n clearErrors: function () {\n this.$('.o-form-error-container').removeClass('o-form-has-errors');\n this.model.trigger('form:clear-errors');\n this.model.trigger('form:resize');\n },\n\n /**\n * Toggles between edit and read mode\n */\n toggle: function () {\n this.model.set('__edit__', !this.hasReadMode() || !this.model.get('__edit__'));\n return this;\n },\n __addLayoutItem: function (input) {\n if (InputFactory.supports(input)) {\n this.addInput(input);\n } else {\n this.__addNonInputLayoutItem(input);\n }\n },\n __addNonInputLayoutItem: function (item) {\n const itemOptions = oktaUnderscore.omit(item, 'type');\n\n switch (item.type) {\n case 'sectionTitle':\n this.addSectionTitle(item.title, oktaUnderscore.omit(itemOptions, 'title'));\n break;\n\n case 'divider':\n this.addDivider(itemOptions);\n break;\n\n default:\n throw new Error('unknown input: ' + item.type);\n }\n },\n\n /**\n * Adds a view to the buttons tool bar\n * @param {Object} params parameterized button options\n * @param {Object} options options to send to {@link module:Okta.View#add|View.add}\n */\n addButton: function (params, options) {\n this.__toolbar && this.__toolbar.addButton(params, options);\n\n this.__buttons.push([params, options]);\n },\n\n /**\n * Adds a divider\n */\n addDivider: function (options) {\n this.add('
      ');\n FormUtil.applyShowWhen(this.last(), options && options.showWhen);\n FormUtil.applyToggleWhen(this.last(), options && options.toggleWhen);\n return this;\n },\n\n /**\n * Adds section header\n * @param {String} title\n */\n addSectionTitle: function (title, options) {\n this.add(sectionTitleTemplate({\n title: title\n }));\n FormUtil.applyShowWhen(this.last(), options && options.showWhen);\n FormUtil.applyToggleWhen(this.last(), options && options.toggleWhen);\n return this;\n },\n\n /**\n * Add a form input\n * @param {Object} options Options to describe the input\n * @param {String} options.type The input type.\n * The options are: `text`, `textarea`, `select`, `checkbox`, `radio`, `switch`,\n * `password`, `number`, `textselect`, `date`, `grouppicker`, `admingrouppicker`, `su-orgspicker`\n * `file/image`, `file/cert`, `checkboxset`, `list`, `group`, `zonepicker`\n * @param {String} options.name The name of the model field this input mutates\n * @param {String|Function} [options.label]\n * The input label text.\n * When passed as a function, will invoke the function (in the context of the {@link InputLabel})\n * on render time, and use the returned value.\n * @param {String} [options.sublabel] The input sub label text\n * @param {String} [options.tooltip] A popover tooltip to be displayed next to the label\n * @param {String} [options.placeholder] Placeholder text.\n * @param {String} [options.explain] Explanation text to render below the input\n * @param {Okta.View} [options.customExplain] A custom view to render below the input (deprecated)\n * @param {Boolean} [options.disabled=false] Make this input disabled\n * @param {Boolean} [options.wide=false] Use a wide input layout\n * @param {Boolean} [options.label-top=false] position label on top of an input\n * @param {Boolean} [options.explain-top=false] position explain on top of an input (requires label-top=true)\n * @param {Number} [options.multi] have multiple in-line inputs. useful when `input` is passed as an array of inputs\n * @param {String} [options.errorField] The API error field here that maps to this input\n * @param {Boolean} [options.inlineValidation=true] Validate input on focusout\n * @param {String} [options.ariaLabel] Used to add aria-label attribute to the input when label is not present.\n * @param {Boolean} [options.group=false] Grouping set of inputs using fieldset and legend. Mainly for radio\n * @param {Object} [options.options]\n * In the context of `radio` and `select`, a key/value set of options\n *\n * @param {Object} [options.params]\n * Widget specific parameters. Varies per input.\n *\n * @param {BaseInput|Object[]} [options.input]\n * - A custom input \"class\" or instance - preferably a **class**, so we can automagically assign the right\n * parameters when initializing it\n * - An array of input definition object literals (such as this one)\n *\n * @param {Object} [options.showWhen]\n * Setting to define when to show (or hide) the input. The input is visible by default.\n *\n * @param {Object} [options.bindings]\n * Bind a certain model attribute to a callback function, so the function is being called on render,\n * and any time this model field changes.\n * This is similar to `showWhen` but is not limited to toggling.\n *\n * @param {Function} [options.render]\n * A post-render hook that will run upon render on InputWrapper\n *\n * @param {String|Function} className A className to apply on the {@link InputWrapper}\n *\n * @param {Function} [options.initialize]\n * An `initialize` function to run when initializing the {@link InputWrapper}\n * Useful for state mutation on start time, and complex state logic\n *\n * @example\n * // showhen: the field will be visible when `advanced` is set to `true`\n * // and `mode` is set to `\"ON\"`.\n * showWhen: {\n * 'advanced': true,\n * 'mode': function (value) {\n * return value == 'ON'; // this is identical to this.model.get('mode') == 'ON'\n * }\n * }\n *\n * @example\n * // bindings\n * bindings: {\n * 'status mode': function (status, mode) {\n * var labelView = this.getLabel();\n * if (status == 1) {\n * labelView.options.label = 'Something';\n * }\n * else {\n * labelView.options.label = mode;\n * }\n * labelView.render();\n * }\n * }\n */\n addInput: function (_options) {\n _options = oktaUnderscore.clone(_options);\n FormUtil.validateInput(_options, this.model);\n const inputsOptions = FormUtil.generateInputOptions(_options, this, this.__createInput).reverse(); // We need a local variable here to keep track\n // as addInput can be called either directy or through the inputs array.\n\n if (oktaUnderscore.isEmpty(this.getInputs().toArray())) {\n oktaUnderscore.extend(inputsOptions[0], {\n validateOnlyIfDirty: true\n });\n }\n\n const inputs = oktaUnderscore.map(inputsOptions, this.__createInput, this);\n\n oktaUnderscore.each(inputsOptions, function (input) {\n if (input.errorField) {\n this.__errorFields[input.errorField] = input.name;\n }\n }, this);\n\n const options = {\n inputId: oktaUnderscore.last(inputs).options.inputId,\n input: inputs,\n multi: inputsOptions.length > 1 ? inputsOptions.length : undefined\n };\n\n oktaUnderscore.extend(options, oktaUnderscore.omit(this.options, 'input'), oktaUnderscore.omit(_options, 'input'));\n\n const inputWrapper = this.__createWrapper(options);\n\n if (options.label !== false) {\n inputWrapper.add(this.__createLabel(options));\n }\n\n inputWrapper.add(this._createContainer(options)); // TODO: there may be a bug here.\n // options.input will always be an array, so options.input.type will always be undefined\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /// @ts-ignore\n\n inputWrapper.type = options.type || options.input.type || 'custom';\n const args = [inputWrapper].concat(oktaUnderscore.rest(arguments));\n return this.add.apply(this, args);\n },\n\n /**\n * @private\n */\n __createInput: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.INPUT_OPTIONS);\n return InputFactory.create(options);\n },\n\n /**\n * @private\n */\n __createWrapper: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.WRAPPER_OPTIONS);\n return new InputWrapper(options);\n },\n\n /**\n * @private\n */\n __createLabel: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.LABEL_OPTIONS);\n return new InputLabel(options);\n },\n\n /**\n * @private\n */\n _createContainer: function (options) {\n options = oktaUnderscore.pick(options, FormUtil.CONTAINER_OPTIONS);\n return new InputContainer(options);\n },\n\n /**\n * Stores the current attributes of the model to a private property\n * @param {Okta.BaseModel} model The model\n * @private\n */\n __saveModelState: function (model) {\n this.__originalModel = oktaJQueryStatic.extend(true, {}, model.attributes);\n },\n\n /**\n * @override\n * @ignore\n */\n add: function (...args) {\n // sets a default element selector\n typeof args[1] === 'undefined' && (args[1] = '> div.o-form-content > .o-form-fieldset-container');\n return BaseView.prototype.add.apply(this, args);\n },\n\n /**\n * Set the focus on the first input in the form\n */\n focus: function () {\n const first = this.getInputs().first();\n\n if (first && first.focus) {\n first.focus();\n }\n\n return this;\n },\n\n /**\n * Disable all inputs in the form\n * @deprecated not currently in use\n */\n disable: function () {\n this.invoke('disable');\n return this;\n },\n\n /**\n * Enable all inputs in the form\n * @deprecated not currently in use\n */\n enable: function () {\n this.invoke('enable');\n },\n\n /**\n * Set the max-height for o-form-content class container within the form if a height is provided,\n * otherwise, get its computed inner height\n * @param {Number} the height in pixel to set for class o-form-content\n * @return {Number}\n */\n contentHeight: function (height) {\n const content = this.$('.o-form-content');\n\n if (oktaUnderscore.isNumber(height)) {\n content.css('max-height', height);\n } else {\n return content.height();\n }\n },\n\n /**\n * Get only the input children\n * @return {InputWrapper[]} An underscore wrapped array of {@link InputWrapper} instances\n */\n getInputs: function () {\n return oktaUnderscore(this.filter(function (view) {\n return view instanceof InputWrapper;\n }));\n }\n});\n\nexport { BaseForm as default };\n","import $ from 'jquery';\n\n(function () {\n var SelectParser;\n\n SelectParser = function () {\n function SelectParser() {\n this.options_index = 0;\n this.parsed = [];\n }\n\n SelectParser.prototype.add_node = function (child) {\n if (child.nodeName.toUpperCase() === \"OPTGROUP\") {\n return this.add_group(child);\n } else {\n return this.add_option(child);\n }\n };\n\n SelectParser.prototype.add_group = function (group) {\n var group_position, option, _i, _len, _ref, _results;\n\n group_position = this.parsed.length;\n this.parsed.push({\n array_index: group_position,\n group: true,\n label: group.label,\n children: 0,\n disabled: group.disabled\n });\n _ref = group.childNodes;\n _results = [];\n\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n\n _results.push(this.add_option(option, group_position, group.disabled));\n }\n\n return _results;\n };\n\n SelectParser.prototype.add_option = function (option, group_position, group_disabled) {\n if (option.nodeName.toUpperCase() === \"OPTION\") {\n if (option.text !== \"\") {\n if (group_position != null) {\n this.parsed[group_position].children += 1;\n }\n\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n value: option.value,\n text: option.text,\n html: option.innerHTML,\n selected: option.selected,\n disabled: group_disabled === true ? group_disabled : option.disabled,\n group_array_index: group_position,\n classes: option.className,\n style: option.style.cssText\n });\n } else {\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n empty: true\n });\n }\n\n return this.options_index += 1;\n }\n };\n\n return SelectParser;\n }();\n\n SelectParser.select_to_array = function (select) {\n var child, parser, _i, _len, _ref;\n\n parser = new SelectParser();\n _ref = select.childNodes;\n\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n child = _ref[_i];\n parser.add_node(child);\n }\n\n return parser.parsed;\n };\n\n this.SelectParser = SelectParser;\n}).call($);\n(function () {\n var AbstractChosen, root;\n root = this;\n\n AbstractChosen = function () {\n function AbstractChosen(form_field, options) {\n this.form_field = form_field;\n this.options = options != null ? options : {};\n\n if (!AbstractChosen.browser_is_supported()) {\n return;\n }\n\n this.is_multiple = this.form_field.multiple;\n this.set_default_text();\n this.set_default_values();\n this.setup();\n this.set_up_html();\n this.register_observers();\n this.finish_setup();\n }\n\n AbstractChosen.prototype.set_default_values = function () {\n var _this = this;\n\n this.click_test_action = function (evt) {\n return _this.test_active_click(evt);\n };\n\n this.activate_action = function (evt) {\n return _this.activate_field(evt);\n };\n\n this.active_field = false;\n this.mouse_on_container = false;\n this.results_showing = false;\n this.result_highlighted = null;\n this.result_single_selected = null;\n this.allow_single_deselect = this.options.allow_single_deselect != null && this.form_field.options[0] != null && this.form_field.options[0].text === \"\" ? this.options.allow_single_deselect : false;\n this.disable_search_threshold = this.options.disable_search_threshold || 0;\n this.disable_search = this.options.disable_search || false;\n this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;\n this.search_contains = this.options.search_contains || false;\n this.single_backstroke_delete = this.options.single_backstroke_delete || false;\n this.max_selected_options = this.options.max_selected_options || Infinity;\n return this.inherit_select_classes = this.options.inherit_select_classes || false;\n };\n\n AbstractChosen.prototype.set_default_text = function () {\n if (this.form_field.getAttribute(\"data-placeholder\")) {\n this.default_text = this.form_field.getAttribute(\"data-placeholder\");\n } else if (this.is_multiple) {\n this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;\n } else {\n this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;\n }\n\n return this.results_none_found = this.form_field.getAttribute(\"data-no_results_text\") || this.options.no_results_text || AbstractChosen.default_no_result_text;\n };\n\n AbstractChosen.prototype.mouse_enter = function () {\n return this.mouse_on_container = true;\n };\n\n AbstractChosen.prototype.mouse_leave = function () {\n return this.mouse_on_container = false;\n };\n\n AbstractChosen.prototype.input_focus = function (evt) {\n var _this = this;\n\n if (this.is_multiple) {\n if (!this.active_field) {\n return setTimeout(function () {\n return _this.container_mousedown();\n }, 50);\n }\n } else {\n if (!this.active_field) {\n return this.activate_field();\n }\n }\n };\n\n AbstractChosen.prototype.input_blur = function (evt) {\n var _this = this;\n\n if (!this.mouse_on_container) {\n this.active_field = false;\n return setTimeout(function () {\n return _this.blur_test();\n }, 100);\n }\n };\n\n AbstractChosen.prototype.result_add_option = function (option) {\n var classes, style;\n option.dom_id = this.container_id + \"_o_\" + option.array_index;\n classes = [];\n\n if (!option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"active-result\");\n }\n\n if (option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"disabled-result\");\n }\n\n if (option.selected) {\n classes.push(\"result-selected\");\n }\n\n if (option.group_array_index != null) {\n classes.push(\"group-option\");\n }\n\n if (option.classes !== \"\") {\n classes.push(option.classes);\n }\n\n style = option.style.cssText !== \"\" && option.style !== \"\" ? \" style=\\\"\" + option.style + \"\\\"\" : \"\";\n return \"
    • \" + option.html + \"
    • \";\n };\n\n AbstractChosen.prototype.results_update_field = function () {\n this.set_default_text();\n\n if (!this.is_multiple) {\n this.results_reset_cleanup();\n }\n\n this.result_clear_highlight();\n this.result_single_selected = null;\n return this.results_build();\n };\n\n AbstractChosen.prototype.results_toggle = function () {\n if (this.results_showing) {\n return this.results_hide();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.results_search = function (evt) {\n if (this.results_showing) {\n return this.winnow_results();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.choices_count = function () {\n var option, _i, _len, _ref;\n\n if (this.selected_option_count != null) {\n return this.selected_option_count;\n }\n\n this.selected_option_count = 0;\n _ref = this.form_field.options;\n\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n\n if (option.selected) {\n this.selected_option_count += 1;\n }\n }\n\n return this.selected_option_count;\n };\n\n AbstractChosen.prototype.choices_click = function (evt) {\n evt.preventDefault();\n\n if (!(this.results_showing || this.is_disabled)) {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.keyup_checker = function (evt) {\n var stroke, _ref;\n\n stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;\n this.search_field_scale();\n\n switch (stroke) {\n case 8:\n if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {\n return this.keydown_backstroke();\n } else if (!this.pending_backstroke) {\n this.result_clear_highlight();\n return this.results_search();\n }\n\n break;\n\n case 13:\n evt.preventDefault();\n\n if (this.results_showing) {\n return this.result_select(evt);\n }\n\n break;\n\n case 27:\n if (this.results_showing) {\n this.results_hide();\n }\n\n return true;\n\n case 9:\n case 38:\n case 40:\n case 16:\n case 91:\n case 17:\n break;\n\n default:\n return this.results_search();\n }\n };\n\n AbstractChosen.prototype.generate_field_id = function () {\n var new_id;\n new_id = this.generate_random_id();\n this.form_field.id = new_id;\n return new_id;\n };\n\n AbstractChosen.prototype.generate_random_char = function () {\n var chars, rand;\n chars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n rand = Math.floor(Math.random() * chars.length);\n return chars.substring(rand, rand + 1);\n };\n\n AbstractChosen.prototype.container_width = function () {\n if (this.options.width != null) {\n return this.options.width;\n } else {\n return \"\" + this.form_field.offsetWidth + \"px\";\n }\n };\n\n AbstractChosen.browser_is_supported = function () {\n var _ref;\n\n if (window.navigator.appName === \"Microsoft Internet Explorer\") {\n return null !== (_ref = document.documentMode) && _ref >= 8;\n }\n\n return true;\n };\n\n AbstractChosen.default_multiple_text = \"Select Some Options\";\n AbstractChosen.default_single_text = \"Select an Option\";\n AbstractChosen.default_no_result_text = \"No results match\";\n return AbstractChosen;\n }();\n\n root.AbstractChosen = AbstractChosen;\n}).call($);\n(function () {\n var $$1,\n Chosen,\n root,\n _ref,\n __hasProp = {}.hasOwnProperty,\n __extends = function (child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n root = this;\n var AbstractChosen = root.AbstractChosen;\n $$1 = $;\n $$1.fn.extend({\n chosen: function (options) {\n if (!AbstractChosen.browser_is_supported()) {\n return this;\n }\n\n return this.each(function (input_field) {\n var $this;\n $this = $$1(this);\n\n if (!$this.hasClass(\"chzn-done\")) {\n return $this.data(\"chosen\", new Chosen(this, options));\n }\n });\n }\n });\n\n Chosen = function (_super) {\n __extends(Chosen, _super);\n\n function Chosen() {\n _ref = Chosen.__super__.constructor.apply(this, arguments);\n return _ref;\n }\n\n Chosen.prototype.setup = function () {\n this.form_field_jq = $$1(this.form_field);\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.is_rtl = this.form_field_jq.hasClass(\"chzn-rtl\");\n };\n\n Chosen.prototype.finish_setup = function () {\n return this.form_field_jq.addClass(\"chzn-done\");\n };\n\n Chosen.prototype.set_up_html = function () {\n var container_classes, container_props;\n this.container_id = this.form_field.id.length ? this.form_field.id.replace(/[^\\w]/g, \"_\") : this.generate_field_id();\n this.container_id += \"_chzn\";\n container_classes = [\"chzn-container\"];\n container_classes.push(\"chzn-container-\" + (this.is_multiple ? \"multi\" : \"single\"));\n\n if (this.inherit_select_classes && this.form_field.className) {\n container_classes.push(this.form_field.className);\n }\n\n if (this.is_rtl) {\n container_classes.push(\"chzn-rtl\");\n }\n\n container_props = {\n \"id\": this.container_id,\n \"class\": container_classes.join(\" \"),\n \"title\": this.form_field.title\n };\n this.container = $$1(\"
      \", container_props);\n this.container[0].style.width = this.container_width();\n\n if (this.is_multiple) {\n this.container.html(\"
        \");\n } else {\n this.container.html(\"
        \" + this.default_text + \"
          \");\n }\n\n this.form_field_jq.hide().after(this.container);\n this.dropdown = this.container.find(\"div.chzn-drop\").first();\n this.search_field = this.container.find(\"input\").first();\n this.search_results = this.container.find(\"ul.chzn-results\").first();\n this.search_field_scale();\n this.search_no_results = this.container.find(\"li.no-results\").first();\n\n if (this.is_multiple) {\n this.search_choices = this.container.find(\"ul.chzn-choices\").first();\n this.search_container = this.container.find(\"li.search-field\").first();\n } else {\n this.search_container = this.container.find(\"div.chzn-search\").first();\n this.selected_item = this.container.find(\".chzn-single\").first();\n }\n\n this.results_build();\n this.set_tab_index();\n this.set_label_behavior();\n return this.form_field_jq.trigger(\"liszt:ready\", {\n chosen: this\n });\n };\n\n Chosen.prototype.register_observers = function () {\n var _this = this;\n\n this.container.mousedown(function (evt) {\n _this.container_mousedown(evt);\n });\n this.container.mouseup(function (evt) {\n _this.container_mouseup(evt);\n });\n this.container.mouseenter(function (evt) {\n _this.mouse_enter(evt);\n });\n this.container.mouseleave(function (evt) {\n _this.mouse_leave(evt);\n });\n this.search_results.mouseup(function (evt) {\n _this.search_results_mouseup(evt);\n });\n this.search_results.mouseover(function (evt) {\n _this.search_results_mouseover(evt);\n });\n this.search_results.mouseout(function (evt) {\n _this.search_results_mouseout(evt);\n });\n this.search_results.bind(\"mousewheel DOMMouseScroll\", function (evt) {\n _this.search_results_mousewheel(evt);\n });\n this.form_field_jq.bind(\"liszt:updated\", function (evt) {\n _this.results_update_field(evt);\n });\n this.form_field_jq.bind(\"liszt:activate\", function (evt) {\n _this.activate_field(evt);\n });\n this.form_field_jq.bind(\"liszt:open\", function (evt) {\n _this.container_mousedown(evt);\n });\n this.search_field.blur(function (evt) {\n _this.input_blur(evt);\n });\n this.search_field.keyup(function (evt) {\n _this.keyup_checker(evt);\n });\n this.search_field.keydown(function (evt) {\n _this.keydown_checker(evt);\n });\n this.search_field.focus(function (evt) {\n _this.input_focus(evt);\n });\n\n if (this.is_multiple) {\n return this.search_choices.click(function (evt) {\n _this.choices_click(evt);\n });\n } else {\n return this.container.click(function (evt) {\n evt.preventDefault();\n });\n }\n };\n\n Chosen.prototype.search_field_disabled = function () {\n this.is_disabled = this.form_field_jq[0].disabled;\n\n if (this.is_disabled) {\n this.container.addClass(\"chzn-disabled\");\n this.search_field[0].disabled = true;\n\n if (!this.is_multiple) {\n this.selected_item.unbind(\"focus\", this.activate_action);\n }\n\n return this.close_field();\n } else {\n this.container.removeClass(\"chzn-disabled\");\n this.search_field[0].disabled = false;\n\n if (!this.is_multiple) {\n return this.selected_item.bind(\"focus\", this.activate_action);\n }\n }\n };\n\n Chosen.prototype.container_mousedown = function (evt) {\n if (!this.is_disabled) {\n if (evt && evt.type === \"mousedown\" && !this.results_showing) {\n evt.preventDefault();\n }\n\n if (!(evt != null && $$1(evt.target).hasClass(\"search-choice-close\"))) {\n if (!this.active_field) {\n if (this.is_multiple) {\n this.search_field.val(\"\");\n }\n\n $$1(document).click(this.click_test_action);\n this.results_show();\n } else if (!this.is_multiple && evt && ($$1(evt.target)[0] === this.selected_item[0] || $$1(evt.target).parents(\"a.chzn-single\").length)) {\n evt.preventDefault();\n this.results_toggle();\n }\n\n return this.activate_field();\n }\n }\n };\n\n Chosen.prototype.container_mouseup = function (evt) {\n if (evt.target.nodeName === \"ABBR\" && !this.is_disabled) {\n return this.results_reset(evt);\n }\n };\n\n Chosen.prototype.search_results_mousewheel = function (evt) {\n var delta, _ref1, _ref2;\n\n delta = -((_ref1 = evt.originalEvent) != null ? _ref1.wheelDelta : void 0) || ((_ref2 = evt.originialEvent) != null ? _ref2.detail : void 0);\n\n if (delta != null) {\n evt.preventDefault();\n\n if (evt.type === \"DOMMouseScroll\") {\n delta = delta * 40;\n }\n\n return this.search_results.scrollTop(delta + this.search_results.scrollTop());\n }\n };\n\n Chosen.prototype.blur_test = function (evt) {\n if (!this.active_field && this.container.hasClass(\"chzn-container-active\")) {\n return this.close_field();\n }\n };\n\n Chosen.prototype.close_field = function () {\n $$1(document).unbind(\"click\", this.click_test_action);\n this.active_field = false;\n this.results_hide();\n this.container.removeClass(\"chzn-container-active\");\n this.clear_backstroke();\n this.show_search_field_default();\n return this.search_field_scale();\n };\n\n Chosen.prototype.activate_field = function () {\n this.container.addClass(\"chzn-container-active\");\n this.active_field = true;\n this.search_field.val(this.search_field.val());\n return this.search_field.focus();\n };\n\n Chosen.prototype.test_active_click = function (evt) {\n if ($$1(evt.target).parents(\"#\" + this.container_id).length) {\n return this.active_field = true;\n } else {\n return this.close_field();\n }\n };\n\n Chosen.prototype.results_build = function () {\n var content, data, _i, _len, _ref1;\n\n this.parsing = true;\n this.selected_option_count = null;\n this.results_data = root.SelectParser.select_to_array(this.form_field);\n\n if (this.is_multiple) {\n this.search_choices.find(\"li.search-choice\").remove();\n } else if (!this.is_multiple) {\n this.selected_item.addClass(\"chzn-default\").find(\"span\").text(this.default_text);\n\n if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {\n this.search_field[0].readOnly = true;\n this.container.addClass(\"chzn-container-single-nosearch\");\n } else {\n this.search_field[0].readOnly = false;\n this.container.removeClass(\"chzn-container-single-nosearch\");\n }\n }\n\n content = \"\";\n _ref1 = this.results_data;\n\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n data = _ref1[_i];\n\n if (data.group) {\n content += this.result_add_group(data);\n } else if (!data.empty) {\n content += this.result_add_option(data);\n\n if (data.selected && this.is_multiple) {\n this.choice_build(data);\n } else if (data.selected && !this.is_multiple) {\n this.selected_item.removeClass(\"chzn-default\").find(\"span\").text(data.text);\n\n if (this.allow_single_deselect) {\n this.single_deselect_control_build();\n }\n }\n }\n }\n\n this.search_field_disabled();\n this.show_search_field_default();\n this.search_field_scale();\n this.search_results.html(content);\n return this.parsing = false;\n };\n\n Chosen.prototype.result_add_group = function (group) {\n group.dom_id = this.container_id + \"_g_\" + group.array_index;\n return \"
        • \" + $$1(\"
          \").text(group.label).html() + \"
        • \";\n };\n\n Chosen.prototype.result_do_highlight = function (el) {\n var high_bottom, high_top, maxHeight, visible_bottom, visible_top;\n\n if (el.length) {\n this.result_clear_highlight();\n this.result_highlight = el;\n this.result_highlight.addClass(\"highlighted\");\n maxHeight = parseInt(this.search_results.css(\"maxHeight\"), 10);\n visible_top = this.search_results.scrollTop();\n visible_bottom = maxHeight + visible_top;\n high_top = this.result_highlight.position().top + this.search_results.scrollTop();\n high_bottom = high_top + this.result_highlight.outerHeight();\n\n if (high_bottom >= visible_bottom) {\n return this.search_results.scrollTop(high_bottom - maxHeight > 0 ? high_bottom - maxHeight : 0);\n } else if (high_top < visible_top) {\n return this.search_results.scrollTop(high_top);\n }\n }\n };\n\n Chosen.prototype.result_clear_highlight = function () {\n if (this.result_highlight) {\n this.result_highlight.removeClass(\"highlighted\");\n }\n\n return this.result_highlight = null;\n };\n\n Chosen.prototype.results_show = function () {\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"liszt:maxselected\", {\n chosen: this\n });\n return false;\n }\n\n this.container.addClass(\"chzn-with-drop\");\n this.form_field_jq.trigger(\"liszt:showing_dropdown\", {\n chosen: this\n });\n this.results_showing = true;\n this.search_field.focus();\n this.search_field.val(this.search_field.val());\n return this.winnow_results();\n };\n\n Chosen.prototype.results_hide = function () {\n if (this.results_showing) {\n this.result_clear_highlight();\n this.container.removeClass(\"chzn-with-drop\");\n this.form_field_jq.trigger(\"liszt:hiding_dropdown\", {\n chosen: this\n });\n }\n\n return this.results_showing = false;\n };\n\n Chosen.prototype.set_tab_index = function (el) {\n var ti;\n\n if (this.form_field_jq.attr(\"tabindex\")) {\n ti = this.form_field_jq.attr(\"tabindex\");\n this.form_field_jq.attr(\"tabindex\", -1);\n return this.search_field.attr(\"tabindex\", ti);\n }\n };\n\n Chosen.prototype.set_label_behavior = function () {\n var _this = this;\n\n this.form_field_label = this.form_field_jq.parents(\"label\");\n\n if (!this.form_field_label.length && this.form_field.id.length) {\n this.form_field_label = $$1(\"label[for='\" + this.form_field.id + \"']\");\n }\n\n if (this.form_field_label.length > 0) {\n return this.form_field_label.click(function (evt) {\n if (_this.is_multiple) {\n return _this.container_mousedown(evt);\n } else {\n return _this.activate_field();\n }\n });\n }\n };\n\n Chosen.prototype.show_search_field_default = function () {\n if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {\n this.search_field.val(this.default_text);\n return this.search_field.addClass(\"default\");\n } else {\n this.search_field.val(\"\");\n return this.search_field.removeClass(\"default\");\n }\n };\n\n Chosen.prototype.search_results_mouseup = function (evt) {\n var target;\n target = $$1(evt.target).hasClass(\"active-result\") ? $$1(evt.target) : $$1(evt.target).parents(\".active-result\").first();\n\n if (target.length) {\n this.result_highlight = target;\n this.result_select(evt);\n return this.search_field.focus();\n }\n };\n\n Chosen.prototype.search_results_mouseover = function (evt) {\n var target;\n target = $$1(evt.target).hasClass(\"active-result\") ? $$1(evt.target) : $$1(evt.target).parents(\".active-result\").first();\n\n if (target) {\n return this.result_do_highlight(target);\n }\n };\n\n Chosen.prototype.search_results_mouseout = function (evt) {\n if ($$1(evt.target).hasClass(\"active-result\" )) {\n return this.result_clear_highlight();\n }\n };\n\n Chosen.prototype.choice_build = function (item) {\n var choice,\n close_link,\n _this = this;\n\n choice = $$1(\"
        • \", {\n \"class\": \"search-choice\"\n }).html(\"\" + item.html + \"\");\n\n if (item.disabled) {\n choice.addClass(\"search-choice-disabled\");\n } else {\n close_link = $$1(\"\", {\n href: \"#\",\n \"class\": \"search-choice-close\",\n rel: item.array_index\n });\n close_link.click(function (evt) {\n return _this.choice_destroy_link_click(evt);\n });\n choice.append(close_link);\n }\n\n return this.search_container.before(choice);\n };\n\n Chosen.prototype.choice_destroy_link_click = function (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (!this.is_disabled) {\n return this.choice_destroy($$1(evt.target));\n }\n };\n\n Chosen.prototype.choice_destroy = function (link) {\n if (this.result_deselect(link.attr(\"rel\"))) {\n this.show_search_field_default();\n\n if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {\n this.results_hide();\n }\n\n link.parents(\"li\").first().remove();\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.results_reset = function () {\n this.form_field.options[0].selected = true;\n this.selected_option_count = null;\n this.selected_item.find(\"span\").text(this.default_text);\n\n if (!this.is_multiple) {\n this.selected_item.addClass(\"chzn-default\");\n }\n\n this.show_search_field_default();\n this.results_reset_cleanup();\n this.form_field_jq.trigger(\"change\");\n\n if (this.active_field) {\n return this.results_hide();\n }\n };\n\n Chosen.prototype.results_reset_cleanup = function () {\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.selected_item.find(\"abbr\").remove();\n };\n\n Chosen.prototype.result_select = function (evt) {\n var high, high_id, item, position;\n\n if (this.result_highlight) {\n high = this.result_highlight;\n high_id = high.attr(\"id\");\n this.result_clear_highlight();\n\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"liszt:maxselected\", {\n chosen: this\n });\n return false;\n }\n\n if (this.is_multiple) {\n high.removeClass(\"active-result\");\n } else {\n this.search_results.find(\".result-selected\").removeClass(\"result-selected\");\n this.result_single_selected = high;\n this.selected_item.removeClass(\"chzn-default\");\n }\n\n high.addClass(\"result-selected\");\n position = high_id.substr(high_id.lastIndexOf(\"_\") + 1);\n item = this.results_data[position];\n item.selected = true;\n this.form_field.options[item.options_index].selected = true;\n this.selected_option_count = null;\n\n if (this.is_multiple) {\n this.choice_build(item);\n } else {\n this.selected_item.find(\"span\").first().text(item.text);\n\n if (this.allow_single_deselect) {\n this.single_deselect_control_build();\n }\n }\n\n if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {\n this.results_hide();\n }\n\n this.search_field.val(\"\");\n\n if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {\n this.form_field_jq.trigger(\"change\", {\n \"selected\": this.form_field.options[item.options_index].value\n });\n }\n\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.result_activate = function (el, option) {\n if (option.disabled) {\n return el.addClass(\"disabled-result\");\n } else if (this.is_multiple && option.selected) {\n return el.addClass(\"result-selected\");\n } else {\n return el.addClass(\"active-result\");\n }\n };\n\n Chosen.prototype.result_deactivate = function (el) {\n return el.removeClass(\"active-result result-selected disabled-result\");\n };\n\n Chosen.prototype.result_deselect = function (pos) {\n var result, result_data;\n result_data = this.results_data[pos];\n\n if (!this.form_field.options[result_data.options_index].disabled) {\n result_data.selected = false;\n this.form_field.options[result_data.options_index].selected = false;\n this.selected_option_count = null;\n result = $$1(\"#\" + this.container_id + \"_o_\" + pos);\n result.removeClass(\"result-selected\").addClass(\"active-result\").show();\n this.result_clear_highlight();\n this.winnow_results();\n this.form_field_jq.trigger(\"change\", {\n deselected: this.form_field.options[result_data.options_index].value\n });\n this.search_field_scale();\n return true;\n } else {\n return false;\n }\n };\n\n Chosen.prototype.single_deselect_control_build = function () {\n if (!this.allow_single_deselect) {\n return;\n }\n\n if (!this.selected_item.find(\"abbr\").length) {\n this.selected_item.find(\"span\").first().after(\"\");\n }\n\n return this.selected_item.addClass(\"chzn-single-with-deselect\");\n };\n\n Chosen.prototype.winnow_results = function () {\n var found, option, part, parts, regex, regexAnchor, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len1, _ref1;\n\n this.no_results_clear();\n results = 0;\n searchText = this.search_field.val() === this.default_text ? \"\" : $$1(\"
          \").text($$1.trim(this.search_field.val())).html();\n regexAnchor = this.search_contains ? \"\" : \"^\";\n regex = new RegExp(regexAnchor + searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\"), \"i\");\n zregex = new RegExp(searchText.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\"), \"i\");\n _ref1 = this.results_data;\n\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n option = _ref1[_i];\n\n if (!option.empty) {\n if (option.group) {\n $$1(\"#\" + option.dom_id).css(\"display\", \"none\");\n } else {\n found = false;\n result_id = option.dom_id;\n result = $$1(\"#\" + result_id);\n\n if (regex.test(option.html)) {\n found = true;\n results += 1;\n } else if (this.enable_split_word_search && (option.html.indexOf(\" \") >= 0 || option.html.indexOf(\"[\") === 0)) {\n parts = option.html.replace(/\\[|\\]/g, \"\").split(\" \");\n\n if (parts.length) {\n for (_j = 0, _len1 = parts.length; _j < _len1; _j++) {\n part = parts[_j];\n\n if (regex.test(part)) {\n found = true;\n results += 1;\n }\n }\n }\n }\n\n if (found) {\n if (searchText.length) {\n startpos = option.html.search(zregex);\n text = option.html.substr(0, startpos + searchText.length) + \"\" + option.html.substr(startpos + searchText.length);\n text = text.substr(0, startpos) + \"\" + text.substr(startpos);\n } else {\n text = option.html;\n }\n\n result.html(text);\n this.result_activate(result, option);\n\n if (option.group_array_index != null) {\n $$1(\"#\" + this.results_data[option.group_array_index].dom_id).css(\"display\", \"list-item\");\n }\n } else {\n if (this.result_highlight && result_id === this.result_highlight.attr(\"id\")) {\n this.result_clear_highlight();\n }\n\n this.result_deactivate(result);\n }\n }\n }\n }\n\n if (results < 1 && searchText.length) {\n return this.no_results(searchText);\n } else {\n return this.winnow_results_set_highlight();\n }\n };\n\n Chosen.prototype.winnow_results_set_highlight = function () {\n var do_high, selected_results;\n\n if (!this.result_highlight) {\n selected_results = !this.is_multiple ? this.search_results.find(\".result-selected.active-result\") : [];\n do_high = selected_results.length ? selected_results.first() : this.search_results.find(\".active-result\").first();\n\n if (do_high != null) {\n return this.result_do_highlight(do_high);\n }\n }\n };\n\n Chosen.prototype.no_results = function (terms) {\n var no_results_html;\n no_results_html = $$1(\"
        • \" + this.results_none_found + \" \\\"\\\"
        • \");\n no_results_html.find(\"span\").first().html(terms);\n return this.search_results.append(no_results_html);\n };\n\n Chosen.prototype.no_results_clear = function () {\n return this.search_results.find(\".no-results\").remove();\n };\n\n Chosen.prototype.keydown_arrow = function () {\n var next_sib;\n\n if (this.results_showing && this.result_highlight) {\n next_sib = this.result_highlight.nextAll(\"li.active-result\").first();\n\n if (next_sib) {\n return this.result_do_highlight(next_sib);\n }\n } else {\n return this.results_show();\n }\n };\n\n Chosen.prototype.keyup_arrow = function () {\n var prev_sibs;\n\n if (!this.results_showing && !this.is_multiple) {\n return this.results_show();\n } else if (this.result_highlight) {\n prev_sibs = this.result_highlight.prevAll(\"li.active-result\");\n\n if (prev_sibs.length) {\n return this.result_do_highlight(prev_sibs.first());\n } else {\n if (this.choices_count() > 0) {\n this.results_hide();\n }\n\n return this.result_clear_highlight();\n }\n }\n };\n\n Chosen.prototype.keydown_backstroke = function () {\n var next_available_destroy;\n\n if (this.pending_backstroke) {\n this.choice_destroy(this.pending_backstroke.find(\"a\").first());\n return this.clear_backstroke();\n } else {\n next_available_destroy = this.search_container.siblings(\"li.search-choice\").last();\n\n if (next_available_destroy.length && !next_available_destroy.hasClass(\"search-choice-disabled\")) {\n this.pending_backstroke = next_available_destroy;\n\n if (this.single_backstroke_delete) {\n return this.keydown_backstroke();\n } else {\n return this.pending_backstroke.addClass(\"search-choice-focus\");\n }\n }\n }\n };\n\n Chosen.prototype.clear_backstroke = function () {\n if (this.pending_backstroke) {\n this.pending_backstroke.removeClass(\"search-choice-focus\");\n }\n\n return this.pending_backstroke = null;\n };\n\n Chosen.prototype.keydown_checker = function (evt) {\n var stroke, _ref1;\n\n stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;\n this.search_field_scale();\n\n if (stroke !== 8 && this.pending_backstroke) {\n this.clear_backstroke();\n }\n\n switch (stroke) {\n case 8:\n this.backstroke_length = this.search_field.val().length;\n break;\n\n case 9:\n if (this.results_showing && !this.is_multiple) {\n this.result_select(evt);\n }\n\n this.mouse_on_container = false;\n break;\n\n case 13:\n evt.preventDefault();\n break;\n\n case 38:\n evt.preventDefault();\n this.keyup_arrow();\n break;\n\n case 40:\n evt.preventDefault();\n this.keydown_arrow();\n break;\n }\n };\n\n Chosen.prototype.search_field_scale = function () {\n var div, style, style_block, styles, w, _i, _len;\n\n if (this.is_multiple) {\n w = 0;\n style_block = \"position:absolute; left: -1000px; top: -1000px; display:none;\";\n styles = [\"font-size\", \"font-style\", \"font-weight\", \"font-family\", \"line-height\", \"text-transform\", \"letter-spacing\"];\n\n for (_i = 0, _len = styles.length; _i < _len; _i++) {\n style = styles[_i];\n style_block += style + \":\" + this.search_field.css(style) + \";\";\n }\n\n div = $$1(\"
          \", {\n \"style\": style_block\n });\n div.text(this.search_field.val());\n $$1(\"body\").append(div);\n w = div.width() + 25;\n div.remove();\n\n if (!this.f_width) {\n this.f_width = this.container.outerWidth();\n }\n\n if (w > this.f_width - 10) {\n w = this.f_width - 10;\n }\n\n return this.search_field.css({\n \"width\": w + \"px\"\n });\n }\n };\n\n Chosen.prototype.generate_random_id = function () {\n var string;\n string = \"sel\" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char();\n\n while ($$1(\"#\" + string).length > 0) {\n string += this.generate_random_char();\n }\n\n return string;\n };\n\n return Chosen;\n }(AbstractChosen);\n\n root.Chosen = Chosen;\n}).call($);\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport Time from '../../util/Time.js';\nimport BaseView from '../BaseView.js';\n\nfunction getOption(callout, option) {\n return oktaUnderscore.resultCtx(callout.options, option, callout) || oktaUnderscore.result(callout, option);\n}\n\nfunction getTopClass(callout) {\n let klass = 'infobox clearfix infobox-' + getOption(callout, 'type');\n\n switch (getOption(callout, 'size')) {\n case 'standard':\n klass += '';\n break;\n\n case 'slim':\n klass += ' infobox-slim';\n break;\n\n case 'compact':\n klass += ' infobox-compact';\n break;\n\n case 'large':\n klass += ' infobox-md';\n break;\n }\n\n if (getOption(callout, 'dismissible')) {\n klass += ' infobox-dismiss';\n }\n\n return klass;\n}\n\nconst events = {\n 'click .infobox-dismiss-link': function (e) {\n e.preventDefault();\n this.$el.fadeOut(Time.UNLOADING_FADE, () => {\n this.trigger('dismissed');\n this.remove();\n });\n }\n};\n\nconst template = _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"title\") || (depth0 != null ? lookupProperty(depth0, \"title\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"title\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 286\n },\n \"end\": {\n \"line\": 1,\n \"column\": 295\n }\n }\n }) : helper)) + \"

          \";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"subtitle\") || (depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"subtitle\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 347\n },\n \"end\": {\n \"line\": 1,\n \"column\": 359\n }\n }\n }) : helper)) + \"

          \";\n },\n \"7\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"
            \" + ((stack1 = lookupProperty(helpers, \"each\").call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? lookupProperty(depth0, \"bullets\") : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(8, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 420\n },\n \"end\": {\n \"line\": 1,\n \"column\": 483\n }\n }\n })) != null ? stack1 : \"\") + \"
          \";\n },\n \"8\": function (container, depth0, helpers, partials, data) {\n return \"
        • \" + container.escapeExpression(container.lambda(depth0, depth0)) + \"
        • \";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"dismissible\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 202\n }\n }\n })) != null ? stack1 : \"\") + \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"title\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 252\n },\n \"end\": {\n \"line\": 1,\n \"column\": 307\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"subtitle\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 307\n },\n \"end\": {\n \"line\": 1,\n \"column\": 370\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, depth0 != null ? lookupProperty(depth0, \"bullets\") : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(7, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 370\n },\n \"end\": {\n \"line\": 1,\n \"column\": 495\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n});\n\nconst CalloutCallout = BaseView.extend(\n/** @lends src/views/components/Callout.prototype */\n{\n attributes: {\n 'data-se': 'callout'\n },\n\n /**\n * Custom HTML or view to inject to the callout\n * @type {String|Okta.View}\n */\n content: null,\n\n /**\n * Size of icon. options are standard, large, compact\n * @type {String}\n */\n size: 'standard',\n\n /**\n * Type of the callout. Valid values are: info, success, warning, error, tip\n * @type {String}\n */\n type: 'info',\n\n /**\n * Can the callout be dismissed\n * @type {Boolean}\n */\n dismissible: false,\n\n /**\n * Callout title\n * @type {String}\n */\n title: null,\n\n /**\n * Callout subtitle\n * @type {String}\n */\n subtitle: null,\n\n /**\n * Array of strings to render as bullet points\n * @type {Array}\n */\n bullets: null,\n\n /**\n * Fired after the callout is dismised - applies when\n * {@link module:Okta.internal.views.components.Callout|dismissible} is set to true\n * @event src/views/components/Callout#dismissed\n */\n constructor: function () {\n this.events = oktaUnderscore.defaults(this.events || {}, events);\n BaseView.apply(this, arguments);\n this.$el.addClass(getTopClass(this));\n this.template = template;\n const content = getOption(this, 'content');\n\n if (content) {\n this.add(content);\n }\n },\n getTemplateData: function () {\n let icon = getOption(this, 'type');\n const size = getOption(this, 'size');\n\n if (icon === 'tip') {\n // css is inconsistent\n icon = 'light-bulb';\n }\n\n switch (size) {\n case 'slim':\n icon = '';\n break;\n\n case 'large':\n icon = [icon, '-', '24'].join('');\n break;\n\n default:\n icon = [icon, '-', '16'].join('');\n }\n\n return {\n icon: icon,\n title: getOption(this, 'title'),\n subtitle: getOption(this, 'subtitle'),\n bullets: getOption(this, 'bullets'),\n dismissible: getOption(this, 'dismissible')\n };\n }\n});\n/**\n * @class src/views/components/Callout\n * @extends module:Okta.View\n */\n\n/**\n * @class module:Okta.internal.views.components.Callout\n */\n\nvar Callout = /** @lends module:Okta.internal.views.components.Callout */\n{\n /**\n * Creates a {@link src/views/components/Callout|Callout}.\n * @static\n * @param {Object} options\n * @param {String|Function} [options.size] Size of icon. options are standard, large, compact, slim\n * @param {String|Okta.View} [options.content] Custom HTML or view to inject to the callout\n * @param {String|Function} [options.title] Callout title\n * @param {String|Function} [options.subtitle] Callout subtitle\n * @param {Array|Function} [options.bullets] Array of strings to render as bullet points\n * @param {Boolean|Function} [options.dismissible] Can the callout be dismissed\n * @param {String|Function} [options.type] Callout type. Valid values are: info, success, warning, error, tip\n *\n * @return {src/views/components/Callout}\n */\n create: function (options) {\n return new CalloutCallout(options);\n }\n};\n\nexport { Callout as default };\n","var Time = {\n DEBOUNCE_DELAY: 200,\n LOADING_FADE: 400,\n UNLOADING_FADE: 400,\n ROW_EXPANDER_TRANSITION: 150,\n HIDE_ADD_MAPPING_FORM: 300\n};\n\nexport { Time as default };\n","import _Handlebars2 from '../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../util/underscore-wrapper.js';\nimport ButtonFactory from '../../util/ButtonFactory.js';\nimport StringUtil from '../../util/StringUtil.js';\nimport BaseView from '../BaseView.js';\nimport Callout from '../components/Callout.js';\nimport Keys from '../../util/Keys.js';\n\nconst props = {\n tagName: 'span',\n attributes: function () {\n return {\n 'data-se': 'o-form-input-' + this.getNameString()\n };\n },\n\n /**\n * default placeholder text when options.placeholder is not defined\n */\n defaultPlaceholder: '',\n constructor: function (options) {\n /* eslint complexity: [2, 9] */\n options = oktaUnderscore.defaults(options || {}, {\n inputId: options.id || oktaUnderscore.uniqueId('input'),\n placeholder: this.defaultPlaceholder,\n inlineValidation: true,\n validateOnlyIfDirty: false\n });\n delete options.id; // decorate the `enable` and `disable` and toggle the `o-form-disabled` class.\n // so we wont need to worry about this when overriding the methods\n\n const self = this;\n\n oktaUnderscore.each({\n enable: 'removeClass',\n disable: 'addClass'\n }, function (method, action) {\n self[action] = oktaUnderscore.wrap(self[action], function (fn) {\n fn.apply(self, arguments);\n self.$el[method]('o-form-disabled');\n });\n });\n\n BaseView.call(this, options);\n\n if (oktaUnderscore.result(options, 'readOnly') !== true && oktaUnderscore.result(options, 'read') === true) {\n this.listenTo(this.model, 'change:__edit__', this.render);\n }\n\n if (oktaUnderscore.isFunction(this.focus)) {\n this.focus = oktaUnderscore.debounce(oktaUnderscore.bind(this.focus, this), 50);\n } // Enable inline validation if this is not the first field in the form.\n\n\n if (!oktaUnderscore.result(options, 'validateOnlyIfDirty')) {\n this.addInlineValidation();\n }\n\n this.addModelListeners();\n this.$el.addClass('o-form-input-name-' + this.getNameString());\n },\n addAriaLabel: function () {\n const ariaLabel = this.options.ariaLabel;\n\n if (ariaLabel) {\n this.$(':input').attr('aria-label', ariaLabel);\n }\n },\n addInlineValidation: function () {\n if (oktaUnderscore.result(this.options, 'inlineValidation')) {\n this.$el.on('focusout', ':input', oktaUnderscore.bind(this.validate, this));\n }\n },\n toModelValue: function () {\n let value = this.val();\n\n if (oktaUnderscore.isFunction(this.to)) {\n value = this.to.call(this, value);\n }\n\n if (oktaUnderscore.isFunction(this.options.to)) {\n value = this.options.to.call(this, value);\n }\n\n return value;\n },\n __getDependencyCalloutBtn: function (btnConfig) {\n const self = this;\n\n const btnOptions = oktaUnderscore.clone(btnConfig);\n\n const originalClick = btnOptions.click || function () {}; // add onfocus listener to re-evaluate depedency when callout button is clicked\n\n\n btnOptions.click = function () {\n oktaJQueryStatic(window).one('focus.dependency', function () {\n self.__showInputDependencies();\n });\n originalClick.call(self);\n };\n\n const BaseInputCalloutBtn = BaseView.extend({\n children: [ButtonFactory.create(btnOptions)]\n });\n return new BaseInputCalloutBtn();\n },\n getCalloutParent: function () {\n return this.$('input[value=\"' + this.getModelValue() + '\"]').parent();\n },\n __getCalloutMsgContainer: function (calloutMsg) {\n return BaseView.extend({\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((helper = (helper = lookupProperty(helpers, \"msg\") || (depth0 != null ? lookupProperty(depth0, \"msg\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"msg\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 29\n },\n \"end\": {\n \"line\": 1,\n \"column\": 36\n }\n }\n }) : helper)) + \"\";\n },\n \"useData\": true\n }),\n getTemplateData: function () {\n return {\n msg: calloutMsg\n };\n }\n });\n },\n showCallout: function (calloutConfig, dependencyResolved) {\n const callout = oktaUnderscore.clone(calloutConfig);\n\n callout.className = 'dependency-callout';\n\n if (callout.btn) {\n callout.content = this.__getDependencyCalloutBtn(callout.btn);\n delete callout.btn;\n }\n\n const dependencyCallout = Callout.create(callout);\n\n if (!dependencyResolved) {\n dependencyCallout.add(this.__getCalloutMsgContainer(StringUtil.localize('dependency.callout.msg', 'courage')));\n }\n\n const calloutParent = this.getCalloutParent();\n calloutParent.append(dependencyCallout.render().el);\n\n if (callout.type === 'success') {\n oktaUnderscore.delay(function () {\n // fade out success callout\n dependencyCallout.$el.fadeOut(800);\n }, 1000);\n }\n },\n removeCallout: function () {\n this.$el.find('.dependency-callout').remove();\n },\n __evaluateCalloutObject: function (dependencyResolved, calloutTitle) {\n let defaultCallout;\n\n if (dependencyResolved) {\n defaultCallout = {\n title: StringUtil.localize('dependency.action.completed', 'courage'),\n size: 'large',\n type: 'success'\n };\n } else {\n defaultCallout = {\n title: StringUtil.localize('dependency.action.required', 'courage', [calloutTitle]),\n size: 'large',\n type: 'warning'\n };\n }\n\n return defaultCallout;\n },\n __handleDependency: function (result, callout) {\n const self = this;\n const calloutConfig = oktaUnderscore.isFunction(callout) ? callout(result) : oktaUnderscore.extend({}, callout, self.__evaluateCalloutObject(result.resolved, callout.title)); // remove existing callouts if any\n\n self.removeCallout();\n self.showCallout(calloutConfig, result.resolved);\n },\n __showInputDependencies: function () {\n const self = this;\n const fieldDependency = self.options.deps[self.getModelValue()];\n\n if (fieldDependency && oktaUnderscore.isFunction(fieldDependency.func)) {\n fieldDependency.func().done(function (data) {\n self.__handleDependency({\n resolved: true,\n data: data\n }, fieldDependency.callout);\n }).fail(function (data) {\n self.__handleDependency({\n resolved: false,\n data: data\n }, fieldDependency.callout);\n });\n } else {\n self.removeCallout();\n }\n },\n _isEdited: false,\n hasIMESupport: false,\n\n /**\n * updates the model with the input's value\n */\n update: function (e) {\n if (!this._isEdited && oktaUnderscore.result(this.options, 'validateOnlyIfDirty')) {\n this._isEdited = true;\n this.addInlineValidation();\n }\n\n this.model.set(this.options.name, this.toModelValue());\n\n if (this.options.deps) {\n // check for dependencies\n this.__showInputDependencies();\n }\n /*\n To add IME support for more components\n - Add hasIMESupport boolean flag and compositionend and compositionstart event listeners to the component\n - Supported components: TextBox.js, TextSelect.js\n - Additionally window.okta.enableIMESupport is an org level FF to toggle IME support\n */\n\n\n if (this.hasIMESupport && window?.okta?.enableIMESupport) {\n if (this.isComposing) {\n return;\n }\n\n if (e && Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * Is the input in edit mode\n * @return {Boolean}\n */\n isEditMode: function () {\n const ret = !oktaUnderscore.result(this.options, 'readOnly') && (oktaUnderscore.result(this.options, 'read') !== true || this.model.get('__edit__') === true);\n return ret;\n },\n\n /**\n * Renders the input\n * @readonly\n */\n render: function () {\n this.preRender();\n const params = this.options.params;\n this.options.params = oktaUnderscore.resultCtx(this.options, 'params', this);\n\n if (this.isEditMode()) {\n this.editMode();\n\n if (oktaUnderscore.resultCtx(this.options, 'disabled', this)) {\n this.disable();\n } else {\n this.enable();\n }\n } else {\n this.readMode();\n }\n\n this.options.params = params;\n this.addAriaLabel();\n this.postRender();\n return this;\n },\n\n /**\n * checks if the current value in the model is valid for this field\n */\n validate: function () {\n if (!this.model.get('__pending__') && this.isEditMode() && oktaUnderscore.isFunction(this.model.validateField)) {\n const validationError = this.model.validateField(this.options.name);\n\n if (validationError) {\n oktaUnderscore.delay(function () {\n this.model.trigger('form:clear-error:' + this.options.name);\n this.model.trigger('invalid', this.model, validationError, false);\n }.bind(this), 100);\n }\n }\n },\n\n /**\n * Add model event listeners\n */\n addModelListeners: function () {\n this.listenTo(this.model, 'form:field-error', function (name) {\n if (this.options.name === name) {\n this.__markError();\n }\n });\n this.listenTo(this.model, 'form:clear-errors change:' + this.options.name, this.__clearError);\n this.listenTo(this.model, 'form:clear-error:' + this.options.name, this.__clearError);\n },\n\n /**\n * The value of the input\n * @return {Mixed}\n */\n val: function () {\n throw new Error('val() is an abstract method');\n },\n\n /**\n * Set focus on the input\n */\n focus: function () {\n throw new Error('focus() is an abstract method');\n },\n\n /**\n * Default value in read mode\n * When model has no value for the field\n */\n defaultValue: function () {\n return '';\n },\n\n /**\n * Renders the input in edit mode\n */\n editMode: function () {\n const options = oktaUnderscore.extend({}, this.options, {\n value: this.getModelValue()\n });\n\n this.$el.html(this.template(options));\n this.options.multi && this.$el.removeClass('margin-r');\n return this;\n },\n\n /**\n * Renders the readable value of the input in read mode\n */\n readMode: function () {\n this.$el.text(this.getReadModeString());\n this.$el.removeClass('error-field');\n this.options.multi && this.$el.addClass('margin-r');\n return this;\n },\n getReadModeString: function () {\n const readModeStr = oktaUnderscore.resultCtx(this.options, 'readModeString', this);\n\n if (readModeStr) {\n return readModeStr;\n }\n\n return this.toStringValue();\n },\n\n /**\n * The model value off the field associated with the input\n * @return {Mixed}\n */\n getModelValue: function () {\n let value = this.model.get(this.options.name);\n\n if (oktaUnderscore.isFunction(this.from)) {\n value = this.from.call(this, value);\n }\n\n if (oktaUnderscore.isFunction(this.options.from)) {\n value = this.options.from.call(this, value);\n }\n\n return value;\n },\n\n /*\n * convenience method to get the textual value from the model\n * will return the textual label rather than value in case of select/radio\n * @return {String}\n */\n toStringValue: function () {\n let value = this.getModelValue();\n\n if (this.options.options) {\n // dropdown or radio\n value = this.options.options[value];\n }\n\n if (Number.isInteger(value) || typeof value === 'boolean') {\n value = String(value);\n }\n\n return value || this.defaultValue();\n },\n\n /**\n * Triggers a form:resize event in order to tell dialogs content size has changed\n */\n resize: function () {\n this.model.trigger('form:resize');\n },\n\n /**\n * Disable the input\n */\n disable: function () {\n this.$(':input').prop('disabled', true);\n },\n\n /**\n * Enable the input\n */\n enable: function () {\n this.$(':input').prop('disabled', false);\n },\n\n /**\n * Change the type of the input field. (e.g., text <--> password)\n * @param type\n */\n changeType: function (type) {\n this.$(':input').prop('type', type); // Update the options so that it keeps the uptodate state\n\n this.options.type = type;\n },\n getNameString: function () {\n if (oktaUnderscore.isArray(this.options.name)) {\n return this.options.name.join('-');\n }\n\n return this.options.name;\n },\n\n /**\n * Get parameters, computing _.result\n * @param {[type]} options alternative options\n * @return {Object} the params\n */\n getParams: function (options) {\n const opts = options || this.options || {};\n return oktaUnderscore.clone(oktaUnderscore.resultCtx(opts, 'params', this) || {});\n },\n\n /**\n * get a parameter from options.params, compute _.result when needed.\n * @param {String} key\n * @param {Object} defaultValue\n * @return {Object} the params\n */\n getParam: function (key, defaultValue) {\n const result = oktaUnderscore.resultCtx(this.getParams(), key, this);\n\n return !oktaUnderscore.isUndefined(result) ? result : defaultValue;\n },\n\n /**\n * Get a parameter from options.params or if empty, object attribute.\n *\n * @param {String} key\n * @return {Object} the param or attribute\n */\n getParamOrAttribute: function (key) {\n return this.getParam(key) || oktaUnderscore.result(this, key);\n },\n __markError: function () {\n this.$el.addClass('o-form-has-errors');\n },\n __clearError: function () {\n this.$el.removeClass('o-form-has-errors');\n }\n};\n/**\n * @class BaseInput\n * @private\n * An abstract object that defines an input for {@link Okta.Form}\n *\n * BaseInputs are typically not created directly, but being passed to {@link Okta.Form#addInput}\n * @extends Okta.View\n */\n\nvar BaseInput = BaseView.extend(props);\n\nexport { BaseInput as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport '../../../vendor/plugins/chosen.jquery.js';\nimport BaseInput from '../BaseInput.js';\nimport Util from '../../../util/Util.js';\nimport StringUtil from '../../../util/StringUtil.js';\n\nconst template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n});\n\nconst option = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n});\n\nconst CHOSEN_WINDOW_MARGIN = 20;\nconst isSafari = Util.isSafari; // Chosen has known problems when it's at the bottom of a container that has\n// overflow:hidden set. Because it attaches to the parent container, its\n// dropdown will be cut off in the UI. Any modal with a chosen select element\n// at the bottom will manifest this behavior.\n//\n// The fix (aside from replacing Chosen) is to change Chosen's behavior -\n// use the existing styles, but attach it to 'body' and position it correctly\n// so that it is not affected by a parent overflow.\n//\n// More details can be found in OKTA-46489, OKTA-83570\n\nconst CHOSEN_MAX_HEIGHT = 240;\nconst CHOSEN_Z_INDEX = 50000;\n\nfunction defer(fn) {\n if (this.params.autoWidth) {\n return fn.call(this);\n } else {\n return oktaUnderscore.defer(oktaUnderscore.bind(fn, this));\n }\n}\n\nfunction findSelectWidth(self) {\n self.$select.hide();\n const select = oktaJQueryStatic(self.$select[0]).hide();\n oktaJQueryStatic('body').append(select);\n const width = self.params.width = select.width() * 1.2 + 'px';\n self.$el.append(select.show());\n return width;\n}\n\nfunction recalculateChosen($chosen, $results, $clone) {\n const offset = $clone.offset();\n $chosen.css({\n left: offset.left,\n top: offset.top\n }); // Update the max-height to fit within the constraints of the window. This\n // is especially important for modals because page scrolling is disabled.\n\n const $win = oktaJQueryStatic(window);\n const rHeight = $results.outerHeight();\n const rBottom = rHeight + $results.offset().top - $win.scrollTop();\n const wHeight = $win.height() - CHOSEN_WINDOW_MARGIN;\n const maxHeight = Math.min(rHeight + wHeight - rBottom, CHOSEN_MAX_HEIGHT);\n $results.css('max-height', maxHeight);\n}\n\nfunction handleKeyUpEvent($select, $chosen, $results) {\n const $highlightedOption = $results.find('.active-result.highlighted');\n $chosen.find('#' + $select.attr('id') + '_txt').attr('aria-activedescendant', $highlightedOption.attr('id')); // change the old selected item aria-selected to false\n // and add add it to new item.\n\n $results.find('[aria-selected=true]').attr('aria-selected', 'false');\n $highlightedOption.attr('aria-selected', 'true'); // In case of Safari, add message to aria-live node to be read by screenreader.\n // We need to do this special handling for Safari due to falkiness with aria-activedescendant\n // handling. https://bit.ly/3z45IZF\n\n if (isSafari()) {\n // message read by screenReader i.e optionValue selected(United States selected)\n const message = StringUtil.localize('oform.selectInput.country', 'courage', [$highlightedOption.text()]);\n const elementId = $select.attr('id');\n\n if (message !== '') {\n oktaJQueryStatic(`#${elementId}_aria_div_id`).text(message);\n }\n }\n\n const noResult = $results.find('li.no-results');\n\n if (noResult.length) {\n noResult.attr('role', 'alert');\n }\n}\n\nfunction fixChosenModal($select, textPlaceholder) {\n const $chosen = $select.next('.chzn-container');\n const $clone = $chosen.clone();\n const $results = $chosen.find('.chzn-results');\n const $searchInput = $chosen.find('.chzn-search input[type=text]');\n $searchInput.on('keyup', () => {\n handleKeyUpEvent($select, $chosen, $results);\n });\n $chosen.addClass('closed'); // Will be used in SIW to fix screen reader focus.\n // Use a hidden clone to maintain layout and calculate offset. This is\n // necessary for more complex layouts (like adding a group rule) where\n // the chosen element is floated.\n\n $clone.css('visibility', 'hidden');\n $clone.removeAttr('id');\n $clone.find('li').removeAttr('id'); // Save the original styles - we'll revert to them when the select closes\n\n const baseStyles = {\n left: $chosen.css('left'),\n top: $chosen.css('top'),\n position: $chosen.css('position'),\n float: $chosen.css('float'),\n 'z-index': $chosen.css('z-index')\n };\n $results.hide(); // Handler for any resize events that happen when the results list is open\n\n const resizeHandler = oktaUnderscore.debounce(function () {\n recalculateChosen($chosen, $results, $clone);\n }, 10); // When the dropdown opens, attach it to body, with the correct absolute\n // position coordinates\n\n\n $select.off('.fixChosen'); // Remove events we could have added before\n\n $select.on('liszt:showing_dropdown.fixChosen', function () {\n $chosen.width($chosen.width());\n $select.after($clone); // .chzn-container can trigger the vertical scrollbar if it causes scrollHeight > window height after append to\n // the body. Force top -999999 to avoid the scrollbar so $chosen can find the right offset for relocation.\n\n $chosen.css({\n position: 'absolute',\n float: 'none',\n 'z-index': CHOSEN_Z_INDEX,\n top: -999999\n });\n oktaJQueryStatic('body').append($chosen);\n oktaJQueryStatic('.chzn-search > :text').prop('placeholder', textPlaceholder);\n $results.show();\n recalculateChosen($chosen, $results, $clone); // Capture scroll events:\n // - for forms that use fixed positioning (like editing attributes in\n // Profile Editor) - window scroll\n // - for forms that are too long for the modal - o-form-content scroll\n\n $select.parents().scroll(resizeHandler);\n oktaJQueryStatic(window).on('resize scroll', resizeHandler);\n });\n $select.on('liszt:showing_dropdown', function () {\n $chosen.removeClass('closed');\n }); // When the dropdown closes or the element is removed, revert to the\n // original styles and reattach it to its original placement in the dom.\n\n $select.on('liszt:hiding_dropdown.fixChosen remove.fixChosen', function () {\n $select.parents().off('scroll', resizeHandler);\n oktaJQueryStatic(window).off('resize scroll', resizeHandler);\n $chosen.css(baseStyles);\n $results.hide();\n $chosen.addClass('closed');\n $results.css('max-height', CHOSEN_MAX_HEIGHT);\n $clone.remove();\n $select.after($chosen);\n }); // Do not change the order of event listeners. This event must execute after \n // \"liszt:hiding_dropdown.fixChosen remove.fixChosen\"\n\n $select.on('liszt:hiding_dropdown.fixChosen', function () {\n $searchInput.focus(); // set focus back to input only when the dropdown is closed\n });\n}\n\nvar Select = BaseInput.extend({\n className: 'o-form-select',\n\n /**\n * @Override\n */\n events: {\n 'change select': 'update',\n 'keyup .chzn-search > :text': function (e) {\n if (Keys.isEsc(e)) {\n this.$('.chzn-search > :text').val('');\n e.stopPropagation();\n }\n }\n },\n constructor: function () {\n this.template = template;\n this.option = this.option || option;\n BaseInput.apply(this, arguments);\n this.params = this.options.params || {};\n },\n\n /**\n * @Override\n */\n editMode: function () {\n /* eslint max-statements: [2, 17] */\n this.$el.html(template(this.options));\n this.$select = this.$('select');\n this.appendOptions(); // Fix a regression in jQuery 1.x on Firefox\n // jQuery.val(value) prepends an empty option to the dropdown\n // if value doesnt exist in the dropdown.\n // http://bugs.jquery.com/ticket/13514\n\n const value = this.getModelValue();\n\n if (value) {\n this.$select.val(value);\n } else {\n this.$('option:first-child').prop('selected', true);\n }\n\n this.$el.addClass('o-form-control');\n\n if (this.params.chosen !== false) {\n this.__applyChosen();\n }\n\n return this;\n },\n appendOptions: function () {\n if (!this.getOptions()) {\n return;\n }\n\n const options = this.getOptions();\n const keys = Object.keys(options);\n this.applySortByKey(keys);\n keys.forEach(key => {\n this.$select.append(this.option({\n key: key,\n value: options[key]\n }));\n });\n },\n applySortByKey: function (keys) {\n const sortByKey = this.options.sortByKey;\n\n if (!sortByKey) {\n return;\n }\n\n if (sortByKey instanceof Function) {\n keys.sort(sortByKey);\n }\n\n if (sortByKey === 'asc') {\n keys.sort();\n }\n\n if (sortByKey === 'desc') {\n keys.sort();\n keys.reverse();\n }\n },\n __applyChosen: function (update) {\n let width = this.options.wide ? '100%' : this.params.width || '62%';\n\n if (this.params.autoWidth) {\n width = findSelectWidth(this);\n }\n\n defer.call(this, function () {\n const searchThreshold = this.getParam('searchThreshold', 10);\n\n if (!oktaUnderscore.result(this.options, 'autoRender') && update !== false) {\n this.update();\n }\n\n this.$select.chosen({\n width: width,\n disable_search_threshold: searchThreshold,\n //eslint-disable-line camelcase\n placeholder_text: this.options['placeholder'],\n //eslint-disable-line camelcase\n search_contains: true //eslint-disable-line camelcase\n\n }); //if options are more than search threshold, consider it as a combobox\n\n const isComboBox = this.options && this.options.options && Object.keys(this.options.options).length > searchThreshold;\n this.accessibilityUpdate(isComboBox, this.params);\n fixChosenModal(this.$select, this.searchPlaceholder);\n\n if (this.params.autoWidth) {\n // fix a chosen css bug\n this.$el.width(0);\n }\n\n this.model.trigger('form:resize');\n });\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$select && this.$select.val();\n },\n\n /**\n * @Override\n */\n focus: function () {\n if (this.$select) {\n return this.$select.focus();\n }\n },\n\n /**\n * @Override\n */\n toStringValue: function () {\n const selectedOption = this.getModelValue();\n let displayString = selectedOption;\n const options = this.getOptions();\n\n if (!oktaUnderscore.isEmpty(options)) {\n displayString = options[selectedOption];\n }\n\n if (oktaUnderscore.isUndefined(displayString)) {\n displayString = this.defaultValue();\n }\n\n return displayString || '';\n },\n\n /**\n * Convert options to an object\n * support input options that is a\n * 1. a static object such as {key1: val1, key2: val2...}\n * 2. a function to be called to return a static object\n * will return an object with key-value pairs or with empty content\n * @return {Object} The value\n */\n getOptions: function () {\n let options = this.options.options;\n\n if (oktaUnderscore.isFunction(options)) {\n options = options.call(this);\n }\n\n return oktaUnderscore.isObject(options) ? options : {};\n },\n remove: function () {\n if (this.$select) {\n this.$select.trigger('remove');\n }\n\n return BaseInput.prototype.remove.apply(this, arguments);\n },\n\n /**\n * @param ariaDivId id for div element\n * Create a div element and add it to chosen container.\n */\n createAriaLiveNode: function (ariaDivId) {\n const $chosen = this.$select.next('.chzn-container'); // set this to off-screen such that no user will see this and only screenReaders will pick this up.\n // we should announce to user only on additions and not on removals.\n\n const $node = oktaJQueryStatic('
          ').attr('role', 'log').attr('aria-live', 'polite').attr('id', ariaDivId).attr('aria-relevant', 'additions').attr('aria-atomic', 'false').attr('class', 'off-screen');\n $node.insertAfter($chosen);\n },\n\n /**\n * Code to make the select/combobox component accessible with screen readers.\n *\n * @param {boolean} isComboBox - Is the select a combobox?\n * @param {object} params - params like aria label\n */\n // eslint-disable-next-line max-statements\n accessibilityUpdate: function (isComboBox, params) {\n const txtBoxId = this.$select.attr('id') + '_txt';\n const ariaDivId = this.$select.attr('id') + '_aria_div_id';\n const ulTagId = this.$select.attr('id') + '_ul'; // this is to fix(OKTA-506711) the accessibility issue due to partial support of aria-activedescendant\n // by Safari. Make use of aria-live to make screenReader announce the option selected by user as a workaround.\n\n if (isSafari()) {\n this.createAriaLiveNode(ariaDivId);\n }\n\n this.$('ul[class=chzn-results]').attr('role', 'listbox').attr('id', ulTagId);\n\n if (isComboBox) {\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-autocomplete', 'list').attr('aria-activedescendant', '').attr('role', 'combobox').attr('aria-expanded', 'true').attr('aria-controls', ulTagId);\n } else {\n this.$('input[type=text]').attr('id', txtBoxId).attr('role', 'listbox');\n }\n\n if (params && params.aria && params.aria.label) {\n const ariaLabel = params.aria.label.trim();\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-label', ariaLabel);\n this.$('ul[class=chzn-results]').attr('aria-label', ariaLabel);\n } else {\n const ariaLabel = this.$el.parent().prev('.o-form-label').find('label').text().trim();\n this.$('input[type=text]').attr('id', txtBoxId).attr('aria-label', ariaLabel);\n this.$('ul[class=chzn-results]').attr('aria-label', ariaLabel);\n }\n\n this.$('.chzn-results .active-result').attr('role', 'option').attr('aria-selected', 'false');\n }\n});\n\nexport { Select as default };\n","import Select from './Select.js';\n\nconst options = {\n undefined: 'undefined',\n true: 'true',\n false: 'false'\n};\n\nconst from = function (val) {\n if (val) {\n return 'true';\n }\n\n if (val === false) {\n return 'false';\n }\n\n return 'undefined';\n};\n\nconst to = function (val) {\n switch (val) {\n case 'undefined':\n return null;\n\n case 'true':\n return true;\n\n case 'false':\n return false;\n\n default:\n return null;\n }\n};\n\nvar BooleanSelect = Select.extend({\n initialize: function () {\n this.options.options = options;\n this.options.from = from;\n this.options.to = to;\n }\n});\n\nexport { BooleanSelect as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport SchemaUtils from '../../../util/SchemaUtil.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport Time from '../../../util/Time.js';\nimport BaseView from '../../BaseView.js';\n\nconst isVowel = function (string) {\n return /^[aeiou]/.test(string);\n};\n\nconst getArticle = function (string) {\n return isVowel(string) ? 'an' : 'a';\n};\n\nconst template = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"

          \" + alias4((helper = (helper = lookupProperty(helpers, \"errorExplain\") || (depth0 != null ? lookupProperty(depth0, \"errorExplain\") : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"errorExplain\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 408\n },\n \"end\": {\n \"line\": 1,\n \"column\": 424\n }\n }\n }) : helper)) + \"

          \";\n },\n \"useData\": true\n});\n\nconst errorClass = 'o-form-has-errors';\nconst updateArrayEvent = 'updateArray';\nvar DeletableBox = BaseView.extend({\n tagName: 'div',\n className: 'o-form-input-group',\n events: {\n 'click a': function (e) {\n e.preventDefault();\n this.remove();\n },\n 'keyup input': function () {\n this.update();\n }\n },\n isEditMode: function () {\n return !this.options.readOnly && (this.options.read !== true || this.model.get('__edit__') === true);\n },\n initialize: function () {\n this.template = template(oktaUnderscore.extend(this.options, {\n placeholder: this.getPlaceholderText(),\n errorExplain: this.getErrorExplainText()\n }));\n this.update = oktaUnderscore.debounce(this.update, this.options.debounceDelay || Time.DEBOUNCE_DELAY);\n },\n render: function () {\n if (this.isEditMode()) {\n this.$el.html(this.template);\n } else {\n this.$el.text(this.options.value);\n this.$('a').hide();\n }\n\n return this;\n },\n remove: function () {\n this.trigger(updateArrayEvent, null);\n this.$el.slideUp(() => {\n BaseView.prototype.remove.call(this, arguments);\n });\n },\n update: function () {\n let updatedValue = this.$('input').val();\n\n const parseFunc = oktaUnderscore.object([SchemaUtils.DATATYPE.number, SchemaUtils.DATATYPE.integer], [StringUtil.parseFloat, this.parseInt]);\n\n if (oktaUnderscore.has(parseFunc, this.options.itemType)) {\n updatedValue = parseFunc[this.options.itemType](updatedValue);\n !oktaUnderscore.isNumber(updatedValue) ? this.markInvalid() : this.clearInvalid();\n }\n\n this.trigger(updateArrayEvent, updatedValue);\n },\n markInvalid: function () {\n this.$el.addClass(errorClass);\n },\n clearInvalid: function () {\n this.$el.removeClass(errorClass);\n },\n getPlaceholderText: function () {\n const text = ['Enter'];\n text.push(getArticle(this.options.itemType));\n text.push(this.options.itemType.toLowerCase());\n return text.join(' ');\n },\n getErrorExplainText: function () {\n const text = ['Value must be'];\n text.push(getArticle(this.options.itemType));\n text.push(this.options.itemType.toLowerCase());\n return text.join(' ');\n },\n parseInt: function (string) {\n // native javascript parseInt is aggressive\n // there're cases we don't want a string to be parsed even though it is convertable\n // so that we don't convert a string silently before warning a user the potential error\n // this is to make sure the string is in an integer format before we parse it\n if (/^-?\\d+$/.test(string)) {\n const num = parseInt(string, 10);\n return !oktaUnderscore.isNaN(num) ? num : string;\n }\n\n return string;\n }\n});\n\nexport { DeletableBox as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport SchemaUtils from '../../../util/SchemaUtil.js';\nimport BaseInput from '../BaseInput.js';\nimport DeletableBox from './DeletableBox.js';\n\nvar TextBoxSet = BaseInput.extend({\n className: 'array-input',\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\" + container.escapeExpression((lookupProperty(helpers, \"i18n\") || depth0 && lookupProperty(depth0, \"i18n\") || container.hooks.helperMissing).call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"i18n\",\n \"hash\": {\n \"bundle\": \"courage\",\n \"code\": \"oform.add.another\"\n },\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 52\n },\n \"end\": {\n \"line\": 1,\n \"column\": 102\n }\n }\n })) + \"\";\n },\n \"useData\": true\n }),\n params: {\n itemType: 'string'\n },\n events: {\n 'click .array-inputs-button': function (e) {\n e.preventDefault();\n\n if (this.isEditMode()) {\n this.addNewElement();\n }\n }\n },\n initialize: function (options) {\n options || (options = {});\n this.params = oktaUnderscore.defaults(options.params || {}, this.params);\n this.uniqueIdPrefix = 'array';\n },\n // api returns null for an array that does not have value\n // convert it to an empty array\n from: function (val) {\n if (!oktaUnderscore.isArray(val)) {\n return [];\n }\n\n return val;\n },\n // @Override\n editMode: function () {\n this._setArrayObject();\n\n this.$el.html(this.template);\n\n oktaUnderscore.each(this.arrayObject, oktaUnderscore.bind(this._addDeletableBox, this));\n\n return this;\n },\n // @Override\n readMode: function () {\n this.editMode();\n this.$('.array-inputs-button').addClass('link-button-disabled');\n },\n // @Override\n // converts arrayObject to a plain array\n // for string type array, returns all values\n // for number/integer type array, returns values in number type\n val: function () {\n let values = oktaUnderscore.values(this.arrayObject);\n\n if (oktaUnderscore.contains([SchemaUtils.DATATYPE.number, SchemaUtils.DATATYPE.integer], this.params.itemType)) {\n values = oktaUnderscore.filter(values, oktaUnderscore.isNumber);\n }\n\n return values;\n },\n focus: function () {},\n addNewElement: function () {\n const value = '';\n\n const key = oktaUnderscore.uniqueId(this.uniqueIdPrefix);\n\n this.arrayObject[key] = value;\n\n this._addDeletableBox(value, key); // update is called to make sure an empty string value is added for string type array\n\n\n this.update();\n },\n _addDeletableBox: function (value, key) {\n const deletableBox = new DeletableBox(oktaUnderscore.extend(oktaUnderscore.pick(this.options, 'read', 'readOnly', 'model'), {\n key: key,\n value: value,\n itemType: this.params.itemType\n }));\n this.listenTo(deletableBox, 'updateArray', function (updatedValue) {\n if (oktaUnderscore.isNull(updatedValue)) {\n delete this.arrayObject[key];\n this.stopListening(deletableBox);\n } else {\n this.arrayObject[key] = updatedValue;\n }\n\n this.update();\n });\n deletableBox.render().$el.hide();\n this.$('.array-inputs-button').before(deletableBox.el);\n deletableBox.$el.slideDown();\n return deletableBox;\n },\n _setArrayObject: function () {\n const array = this.model.get(this.options.name);\n this.arrayObject = {};\n\n if (oktaUnderscore.isArray(array) && !oktaUnderscore.isEmpty(array)) {\n const keys = [];\n const self = this;\n\n oktaUnderscore(array.length).times(function () {\n keys.push(oktaUnderscore.uniqueId(self.uniqueIdPrefix));\n });\n\n this.arrayObject = oktaUnderscore.object(keys, array);\n }\n }\n});\n\nexport { TextBoxSet as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport StringUtil from '../../../util/StringUtil.js';\nimport BooleanSelect from '../inputs/BooleanSelect.js';\nimport TextBoxSet from '../inputs/TextBoxSet.js';\nimport EnumTypeHelper from './EnumTypeHelper.js';\n\n/* eslint max-statements: 0, max-params: 0 */\n\nfunction convertStringToNumber(string) {\n const number = StringUtil.parseFloat(string);\n return string === '' ? null : number;\n} // converts possibleValues to choices\n// [a, b, c] => {a: a, b: b, c: c}\n\n\nfunction getChoices(values) {\n return oktaUnderscore.object(values, values);\n}\n\nfunction isArray(type) {\n return type && type.indexOf('array') >= 0;\n} // A schema property may have an objectName either\n// at the root level or nested in the items object\n\n\nfunction getObjectName(schemaProp) {\n const items = schemaProp.get('items');\n\n if (items) {\n return items.objectName;\n }\n\n return schemaProp.get('objectName');\n}\n/**\n * Checks the validity of a schema property.\n *\n * @param {SchemaProperty} [schemaProp] A schema property backbone model\n * @param {Object} [values] An object of the form { key: [value1, value2]}\n * @return {Boolean} true/false\n * @private\n */\n\n\nfunction isValidSchemaProp(schemaProp, values) {\n const objectName = getObjectName(schemaProp);\n const results = values[objectName]; // a schema property that references an empty list of values\n // Im looking at you, google apps.\n\n if (objectName && oktaUnderscore(results).isEmpty()) {\n return false;\n }\n\n return true;\n} // Maps each __displayType__ to a basic set of inputOptions.\n\n\nfunction defaultOptions(property) {\n const type = property.get('__displayType__');\n const values = property.get('__possibleValues__');\n const name = property.get('name');\n const title = property.get('title');\n /* eslint complexity: [2, 24] */\n\n const inputOptions = {\n type: 'text',\n name: name,\n label: title || name\n }; // @see customOptions for enum complex \"object\" type,\n // a.k.a \"object\" or \"arrayofobject\" type has enum values defined.\n // Other cases (e.g., nested object type) are not support yet.\n\n switch (type) {\n case 'arrayofstring':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: 'string'\n };\n break;\n\n case 'arrayofnumber':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: 'number'\n };\n break;\n\n case 'arrayofinteger':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: 'integer'\n };\n break;\n\n case 'arrayofobject':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: property.get('items').type\n };\n break;\n\n case 'arrayofref-id':\n inputOptions.input = TextBoxSet;\n inputOptions.params = {\n itemType: property.get('items').format\n };\n break;\n\n case 'boolean':\n inputOptions.input = BooleanSelect;\n break;\n\n case 'integer':\n case 'number':\n inputOptions.to = convertStringToNumber;\n break;\n\n case 'reference':\n inputOptions.type = 'select';\n inputOptions.options = getChoices(values);\n break;\n\n case 'image':\n inputOptions.readOnly = true;\n\n inputOptions.from = function (value) {\n return oktaUnderscore.isEmpty(value) ? '' : StringUtil.localize('user.profile.image.image_set', 'courage'); // TODO\n };\n\n break;\n\n case 'password':\n inputOptions.type = 'password';\n break;\n\n case 'date':\n inputOptions.type = 'date';\n break;\n\n case 'uri':\n case 'country-code':\n case 'country_code':\n case 'language-code':\n case 'language_code':\n case 'email':\n case 'locale':\n case 'timezone':\n case 'string':\n case 'object':\n // default input options\n break;\n\n default:\n throw new Error(`unknown type: ${type}`);\n }\n\n return inputOptions;\n} // Sets nonbasic inputOptions, such as an array with possible values\n\n\nfunction customOptions(property) {\n let inputOptions = {};\n const name = property.get('name');\n const type = property.get('__displayType__');\n const values = property.get('__possibleValues__');\n const prefix = property.get('__fieldNamePrefix__');\n\n if (prefix) {\n inputOptions.name = prefix + name;\n inputOptions.errorField = name;\n }\n\n if (property.isEnumType()) {\n const configs = {\n displayType: type,\n title: property.get('title'),\n enumValues: property.getEnumValues()\n };\n inputOptions = oktaUnderscore.extend({}, EnumTypeHelper.getEnumInputOptions(configs), inputOptions);\n } else if (isArray(type) && values) {\n inputOptions.type = 'checkboxset';\n inputOptions.input = null;\n inputOptions.options = getChoices(values);\n }\n\n return inputOptions;\n}\n\nfunction augmentSchemaProp(schemaProp, possibleValues, profile) {\n const name = schemaProp.get('name');\n const prefix = profile.__nestedProperty__;\n let defaultValues = possibleValues[name];\n const userValues = profile.get(name);\n let values; // If API responds with a field name that differs from the form-field name\n // example: Model's 'profile.username' vs. server's 'username'\n\n if (prefix) {\n schemaProp.set('__fieldNamePrefix__', prefix);\n } // case 1: objectName - fixed list of values are set for the input\n\n\n const fixedValues = possibleValues[getObjectName(schemaProp)]; // case 2: name only - default list of values are provided, user can add more\n // TODO: this case does not yet exist, so it is not tested\n\n if (defaultValues && userValues) {\n defaultValues = oktaUnderscore.union(defaultValues, userValues);\n } // If both fixed and default values exist,\n // take the fixed values unless they are empty\n\n\n if (fixedValues && fixedValues.length) {\n values = fixedValues;\n } else if (defaultValues && defaultValues.length) {\n values = defaultValues;\n }\n\n schemaProp.set('__possibleValues__', values);\n}\n\nfunction augmentSchemaProps(schemaProps, possibleValues, profile) {\n schemaProps.each(function (schemaProp) {\n augmentSchemaProp(schemaProp, possibleValues, profile);\n });\n return schemaProps;\n}\n/**\n * Remove invalid schema properties from a collection\n *\n * @param {SchemaProperties Collection} [properties] A collection of schema properties\n * @param {Object} [values] An object of the form { key: [value1, value2]}\n * @return {Array} An array of valid schema models, this can be used to reset\n * a schema properties collection for example.\n * @private\n */\n\n\nfunction cleanSchema(properties, values) {\n return properties.filter(function (schema) {\n return isValidSchemaProp(schema, values);\n });\n}\n\nvar SchemaFormFactory = {\n /**\n * Creates the options hash for BaseForm.addInput from a prepared schema\n * property.\n *\n * @param {Okta.Model} [preparedSchemaProp] A schema property backbone model\n * that has been standardized by the prepareSchema method.\n * @return {Object} An object containing all of the options needed by\n * BaseForm's addInput()\n */\n createInputOptions: function (preparedSchemaProp) {\n const custom = customOptions(preparedSchemaProp);\n const standard = defaultOptions(preparedSchemaProp); // underscore did not support nested extend\n // https://github.com/jashkenas/underscore/issues/162\n\n if (custom.params && standard.params) {\n custom.params = oktaUnderscore.defaults(custom.params, standard.params);\n }\n\n return oktaUnderscore.defaults(custom, standard);\n },\n hasValidSchemaProps: function (schemaProps, possibleValues) {\n if (oktaUnderscore.isEmpty(schemaProps)) {\n return false;\n }\n\n const validSchema = cleanSchema(schemaProps, possibleValues);\n return !!validSchema.length;\n },\n\n /**\n * This method is responsible for preparing a collection for the form\n * factory to use by putting all of the information to create an input\n * into the schema property and removing invalid properties.\n * The typical UD form takes 3 models:\n * The data model has the input values.\n * The schema model describes which input to use, such as a textbox or a checkbox.\n * The possible values model provide a list of default options to display, for example in a drop down menu.\n *\n * @param {SchemaProperty Collection} [schemaProps] A schema property backbone model.\n * @param {Object} [possibleValues] An object of the form { key: [value1, value2]}\n * @param {Okta.Model} [profile] A backbone model containing the property described by the schema property.\n * @return {SchemaProperty Collection} A schema property collection with standardized models.\n * The standard schema model adds a couple of additional private properties to\n * allow the form factory to reference lookup values or name prefixes without going to a second model.\n */\n prepareSchema: function (schemaProps, possibleValues, profile) {\n schemaProps.reset(cleanSchema(schemaProps, possibleValues));\n return augmentSchemaProps(schemaProps, possibleValues, profile);\n },\n\n /**\n * `prepareSchema` will reset the property list which may not be necessary at some case.\n * like when setting default value for schema properties.\n * (more detail about such case @see wiki UX, App+Entitlements+for+Provisioning)\n *\n * @param { }\n * @return {String}\n */\n augmentSchemaProps: augmentSchemaProps,\n augmentSchemaProp: augmentSchemaProp\n};\n\nexport { SchemaFormFactory as default };\n","import $ from 'jquery';\n\n/**\n * There are following local modifications:\n * - Author: Uzi Kilon ukilon@okta.com\n * Bug: OKTA-20830 - solves the conflict when there are multiple labels\n */\n\n/**\n * --------------------------------------------------------------------\n * jQuery customInput plugin\n * Author: Maggie Costello Wachs maggie@filamentgroup.com, Scott Jehl, scott@filamentgroup.com\n * Copyright (c) 2009 Filament Group\n * licensed under MIT (filamentgroup.com/examples/mit-license.txt)\n * --------------------------------------------------------------------\n*/\n(function () {\n var jQuery = $;\n\n var $$1 = jQuery;\n\n jQuery.fn.customInput = function () {\n return $$1(this).each(function () {\n if ($$1(this).is('[type=checkbox],[type=radio]')) {\n var input = $$1(this); // get the associated label using the input's id\n\n var label = input.siblings('label[for=\"' + input.attr('id') + '\"]:first');\n\n if (!label.length) {\n label = input.closest('label[for=\"' + input.attr('id') + '\"]:first');\n } // wrap the input + label in a div\n\n\n input.add(label).wrapAll('
          '); // necessary for browsers that don't support the :hover pseudo class on labels\n\n label.hover(function () {\n $$1(this).addClass('hover');\n }, function () {\n $$1(this).removeClass('hover');\n }); //bind custom event, trigger it, bind click,focus,blur events\n\n input.bind('updateState', function () {\n input.is(':checked') ? label.addClass('checked') : label.removeClass('checked checkedHover checkedFocus');\n }).trigger('updateState').click(function () {\n $$1('input[name=\"' + $$1(this).attr('name') + '\"]').trigger('updateState');\n }).focus(function () {\n label.addClass('focus');\n\n if (input.is(':checked')) {\n $$1(this).addClass('checkedFocus');\n }\n }).blur(function () {\n label.removeClass('focus checkedFocus');\n });\n }\n });\n };\n})();\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport '../../../vendor/plugins/jquery.custominput.js';\nimport BaseInput from '../BaseInput.js';\n\nvar CheckBox = BaseInput.extend({\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n }),\n\n /**\n * @Override\n */\n events: {\n 'change :checkbox': 'update',\n keyup: function (e) {\n e.preventDefault();\n\n if (Keys.isSpaceBar(e)) {\n this.$(':checkbox').click();\n } else if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * @Override\n */\n editMode: function () {\n let placeholder = oktaUnderscore.resultCtx(this.options, 'placeholder', this);\n\n if (placeholder === '') {\n placeholder = oktaUnderscore.resultCtx(this.options, 'label', this);\n } else if (placeholder === false) {\n placeholder = '';\n }\n\n this.$el.html(this.template(oktaUnderscore.extend(oktaUnderscore.omit(this.options, 'placeholder'), {\n placeholder: placeholder\n })));\n const $input = this.$(':checkbox');\n $input.prop('checked', this.getModelValue() || false);\n this.$('input').customInput();\n this.model.trigger('form:resize');\n return this;\n },\n\n /**\n * @Override\n */\n readMode: function () {\n this.editMode();\n this.$(':checkbox').prop('disabled', true);\n return this;\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$(':checkbox').prop('checked');\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$(':checkbox').focus();\n }\n});\n\nexport { CheckBox as default };\n","import $ from 'jquery';\n\n/*! http://mths.be/placeholder v2.0.7 by @mathias */\n\n(function () {\n var $$1 = $;\n\n var isInputSupported = ('placeholder' in document.createElement('input')),\n isTextareaSupported = ('placeholder' in document.createElement('textarea')),\n prototype = $$1.fn,\n valHooks = $$1.valHooks,\n hooks,\n placeholder;\n\n if (isInputSupported && isTextareaSupported) {\n placeholder = prototype.placeholder = function () {\n return this;\n };\n\n placeholder.input = placeholder.textarea = true;\n } else {\n placeholder = prototype.placeholder = function () {\n var $this = this;\n $this.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]').not('.placeholder').bind({\n 'focus.placeholder': clearPlaceholder,\n 'blur.placeholder': setPlaceholder\n }).data('placeholder-enabled', true).trigger('blur.placeholder');\n return $this;\n };\n\n placeholder.input = isInputSupported;\n placeholder.textarea = isTextareaSupported;\n hooks = {\n 'get': function (element) {\n var $element = $$1(element);\n return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;\n },\n 'set': function (element, value) {\n var $element = $$1(element);\n\n if (!$element.data('placeholder-enabled')) {\n return element.value = value;\n }\n\n if (value == '') {\n element.value = value; // Issue #56: Setting the placeholder causes problems if the element continues to have focus.\n\n if (element != document.activeElement) {\n // We can't use `triggerHandler` here because of dummy text/password inputs :(\n setPlaceholder.call(element);\n }\n } else if ($element.hasClass('placeholder')) {\n clearPlaceholder.call(element, true, value) || (element.value = value);\n } else {\n element.value = value;\n } // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363\n\n\n return $element;\n }\n };\n isInputSupported || (valHooks.input = hooks);\n isTextareaSupported || (valHooks.textarea = hooks);\n $$1(function () {\n // Look for forms\n $$1(document).delegate('form', 'submit.placeholder', function () {\n // Clear the placeholder values so they don't get submitted\n var $inputs = $$1('.placeholder', this).each(clearPlaceholder);\n setTimeout(function () {\n $inputs.each(setPlaceholder);\n }, 10);\n });\n }); // Clear placeholder values upon page reload\n\n $$1(window).bind('beforeunload.placeholder', function () {\n $$1('.placeholder').each(function () {\n this.value = '';\n });\n });\n }\n\n function args(elem) {\n // Return an object of element attributes\n var newAttrs = {},\n rinlinejQuery = /^jQuery\\d+$/;\n $$1.each(elem.attributes, function (i, attr) {\n if (attr.specified && !rinlinejQuery.test(attr.name)) {\n newAttrs[attr.name] = attr.value;\n }\n });\n return newAttrs;\n }\n\n function clearPlaceholder(event, value) {\n var input = this,\n $input = $$1(input);\n\n if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {\n if ($input.data('placeholder-password')) {\n $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); // If `clearPlaceholder` was called from `$.valHooks.input.set`\n\n if (event === true) {\n return $input[0].value = value;\n }\n\n $input.focus();\n } else {\n input.value = '';\n $input.removeClass('placeholder');\n input == document.activeElement && input.select();\n }\n }\n }\n\n function setPlaceholder() {\n var $replacement,\n input = this,\n $input = $$1(input),\n id = this.id;\n\n if (input.value == '') {\n if (input.type == 'password') {\n if (!$input.data('placeholder-textinput')) {\n try {\n $replacement = $input.clone().attr({\n 'type': 'text'\n });\n } catch (e) {\n $replacement = $$1('').attr($$1.extend(args(this), {\n 'type': 'text'\n }));\n }\n\n $replacement.removeAttr('name').data({\n 'placeholder-password': true,\n 'placeholder-id': id\n }).bind('focus.placeholder', clearPlaceholder);\n $input.data({\n 'placeholder-textinput': $replacement,\n 'placeholder-id': id\n }).before($replacement);\n }\n\n $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); // Note: `$input[0] != input` now!\n }\n\n $input.addClass('placeholder');\n $input[0].value = $input.attr('placeholder');\n } else {\n $input.removeClass('placeholder');\n }\n }\n})();\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport '@okta/qtip';\nimport Keys from '../../../util/Keys.js';\nimport '../../../vendor/plugins/jquery.placeholder.js';\nimport BaseInput from '../BaseInput.js';\n\nconst className = 'okta-form-input-field input-fix';\n\nfunction hasTitleAndText(options) {\n const title = options.title;\n const text = options.text;\n return title && text && title !== text;\n} // options may be a string or an object.\n\n\nfunction createQtipContent(options) {\n if (hasTitleAndText(options)) {\n return options;\n }\n\n return {\n text: options.text || options\n };\n}\n\nvar TextBox = BaseInput.extend({\n template: _Handlebars2.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"autoComplete\") || (depth0 != null ? lookupProperty(depth0, \"autoComplete\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"autoComplete\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 333\n },\n \"end\": {\n \"line\": 1,\n \"column\": 349\n }\n }\n }) : helper));\n },\n \"7\": function (container, depth0, helpers, partials, data) {\n return \"off\";\n },\n \"9\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return ((stack1 = lookupProperty(helpers, \"if\").call(alias1, (stack1 = depth0 != null ? lookupProperty(depth0, \"params\") : depth0) != null ? lookupProperty(stack1, \"innerTooltip\") : stack1, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 87\n }\n }\n })) != null ? stack1 : \"\") + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, (stack1 = depth0 != null ? lookupProperty(depth0, \"params\") : depth0) != null ? lookupProperty(stack1, \"icon\") : stack1, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 87\n },\n \"end\": {\n \"line\": 1,\n \"column\": 166\n }\n }\n })) != null ? stack1 : \"\") + \"\" + ((stack1 = lookupProperty(helpers, \"if\").call(alias1, (stack1 = depth0 != null ? lookupProperty(depth0, \"params\") : depth0) != null ? lookupProperty(stack1, \"iconDivider\") : stack1, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(9, data, 0),\n \"inverse\": container.noop,\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 371\n },\n \"end\": {\n \"line\": 1,\n \"column\": 444\n }\n }\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n }),\n\n /**\n * @Override\n */\n events: {\n 'input input': 'update',\n 'change input': 'update',\n 'keydown input': 'update',\n 'compositionend input': function () {\n this.isComposing = false;\n },\n 'compositionstart input': function () {\n this.isComposing = true;\n },\n 'keyup input': function (e) {\n if (Keys.isEnter(e) && !(window.okta && window.okta.enableIMESupport)) {\n this.model.trigger('form:save');\n } else if (Keys.isEsc(e)) {\n this.model.trigger('form:cancel');\n }\n }\n },\n hasIMESupport: true,\n constructor: function () {\n BaseInput.apply(this, arguments);\n this.$el.addClass('o-form-control');\n },\n\n /**\n * @Override\n */\n editMode: function () {\n this.$el.addClass(className);\n BaseInput.prototype.editMode.apply(this, arguments);\n this.$('input').placeholder();\n },\n\n /**\n * @Override\n */\n readMode: function () {\n BaseInput.prototype.readMode.apply(this, arguments);\n\n if (this.options.type === 'password') {\n this.$el.text('********');\n }\n\n this.$el.removeClass(className);\n },\n\n /**\n * @Override\n */\n val: function () {\n let inputValue = this.$('input[type=\"' + this.options.type + '\"]').val(); //IE will only read clear text pw if type=\"password\" is explicitly in selector\n\n if (this.options.type !== 'password') {\n inputValue = oktaJQueryStatic.trim(inputValue);\n }\n\n return inputValue;\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$('input').focus();\n },\n postRender: function () {\n const {\n params: params\n } = this.options;\n\n if (params && params.innerTooltip) {\n const content = createQtipContent(params.innerTooltip);\n this.$('.input-tooltip').qtip({\n content: content,\n style: {\n classes: 'okta-tooltip qtip-custom qtip-shadow'\n },\n position: {\n my: 'bottom left',\n // Note: qTip2 has a known issue calculating the tooltip offset when:\n // 1. A container element has both:\n // a) position: relative/absolute\n // b) overlay: value other than 'visible'\n // 2. The page is scrolled\n //\n // We set position:relative and overlay:auto on the body element,\n // where both are required for:\n // - Positioning the footer correctly\n // - Displaying long pages in embedded browsers\n //\n // The original design called for a fixed position relative to the\n // tooltip icon - this has been switched to \"relative to mouse, and\n // update position when mouse moves\" because of this constraint.\n target: 'mouse',\n adjust: {\n method: 'flip',\n mouse: true,\n y: -5,\n x: 5\n },\n viewport: oktaJQueryStatic('body')\n }\n });\n }\n }\n});\n\nexport { TextBox as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport TextBox from './TextBox.js';\n\nconst toggleTemplate = _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"\";\n },\n \"useData\": true\n});\n\nconst toggleTimeout = 30000;\nvar PasswordBox = TextBox.extend({\n initialize: function () {\n if (this.__showPasswordToggle()) {\n this.events['click .password-toggle .button-show'] = '__showPassword';\n this.events['click .password-toggle .button-hide'] = '__hidePassword';\n }\n\n this.delegateEvents();\n },\n postRender: function () {\n if (this.isEditMode() && this.__showPasswordToggle()) {\n this.$el.append(toggleTemplate);\n this.$el.find('input[type=\"password\"]').addClass('password-with-toggle');\n }\n\n TextBox.prototype.postRender.apply(this, arguments);\n },\n\n /**\n * @Override\n * Overrides the default val method in order to avoid whitespace trimming\n */\n val: function () {\n return this.$('input[type=\"' + this.options.type + '\"]').val();\n },\n __showPasswordToggle: function () {\n return this.options.params && this.options.params.showPasswordToggle;\n },\n __showPassword: function () {\n // Turn off the spellcheck if the user decides to switch to regular input\n // in order to prevent sending passwords to third party spellcheckers\n this.$('input').attr('spellcheck', false);\n TextBox.prototype.changeType.apply(this, ['text']);\n this.$('.password-toggle .button-show').hide();\n this.$('.password-toggle .button-hide').show();\n this.passwordToggleTimer = oktaUnderscore.delay(() => {\n this.__hidePassword();\n }, toggleTimeout);\n },\n __hidePassword: function () {\n TextBox.prototype.changeType.apply(this, ['password']);\n this.$('.password-toggle .button-show').show();\n this.$('.password-toggle .button-hide').hide(); // clear timeout\n\n if (this.passwordToggleTimer) {\n clearTimeout(this.passwordToggleTimer);\n }\n }\n});\n\nexport { PasswordBox as default };\n","import _Handlebars2 from '../../../../../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport oktaJQueryStatic from '../../../util/jquery-wrapper.js';\nimport oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport Keys from '../../../util/Keys.js';\nimport Util from '../../../util/Util.js';\nimport BaseView from '../../BaseView.js';\nimport '../../../vendor/plugins/jquery.custominput.js';\nimport BaseInput from '../BaseInput.js';\n\nconst isABaseView = Util.isABaseView;\nconst RadioRadioOption = BaseView.extend({\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.hooks.helperMissing,\n alias3 = \"function\",\n alias4 = container.escapeExpression,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return \"\";\n },\n \"useData\": true\n }),\n initialize: function (options) {\n let explain;\n explain = options.explain;\n\n if (oktaUnderscore.isFunction(explain) && !isABaseView(explain)) {\n explain = oktaUnderscore.resultCtx(this.options, 'explain', this);\n }\n\n if (!explain) {\n return;\n }\n\n if (isABaseView(explain)) {\n this.add('

          ', '.radio-label');\n this.add(explain, '.o-form-explain');\n } else {\n this.add(BaseView.extend({\n className: 'o-form-explain',\n tagName: 'p',\n template: _Handlebars2.template({\n \"compiler\": [8, \">= 4.3.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper,\n lookupProperty = container.lookupProperty || function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n\n return undefined;\n };\n\n return container.escapeExpression((helper = (helper = lookupProperty(helpers, \"explain\") || (depth0 != null ? lookupProperty(depth0, \"explain\") : depth0)) != null ? helper : container.hooks.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"explain\",\n \"hash\": {},\n \"data\": data,\n \"loc\": {\n \"start\": {\n \"line\": 1,\n \"column\": 0\n },\n \"end\": {\n \"line\": 1,\n \"column\": 11\n }\n }\n }) : helper));\n },\n \"useData\": true\n })\n }), '.radio-label');\n }\n }\n});\nvar Radio = BaseInput.extend({\n /**\n * @Override\n */\n events: {\n 'change :radio': 'update',\n keyup: function (e) {\n if (Keys.isSpaceBar(e)) {\n oktaJQueryStatic(e.target).click();\n } else if (Keys.isEnter(e)) {\n this.model.trigger('form:save');\n }\n }\n },\n\n /**\n * @Override\n */\n editMode: function () {\n const templates = [];\n this.$el.empty();\n\n oktaUnderscore.each(this.options.options, function (value, key) {\n const options = {\n optionId: oktaUnderscore.uniqueId('option'),\n name: this.options.inputId,\n realName: this.options.name,\n value: key\n };\n\n if (!oktaUnderscore.isObject(value)) {\n value = {\n label: value\n };\n }\n\n oktaUnderscore.extend(options, value);\n\n templates.push(new RadioRadioOption(options).render().el);\n }, this);\n\n this.$el.append(templates);\n let value = this.getModelValue();\n\n if (value) {\n this.$(':radio[value=' + value + ']').prop('checked', true);\n }\n\n this.$('input').customInput();\n this.model.trigger('form:resize');\n\n if (this.getParam('inline') === true) {\n this.$('div.custom-radio').addClass('inline');\n }\n\n return this;\n },\n\n /**\n * @Override\n */\n readMode: function () {\n this.editMode();\n this.$(':radio').prop('disabled', true);\n return this;\n },\n\n /**\n * @Override\n */\n val: function () {\n return this.$(':radio:checked').val();\n },\n\n /**\n * @Override\n */\n focus: function () {\n return this.$('label:eq(0)').focus();\n }\n});\n\nexport { Radio as default };\n","import oktaUnderscore from '../../../util/underscore-wrapper.js';\nimport ButtonFactory from '../../../util/ButtonFactory.js';\nimport BaseView from '../../BaseView.js';\nimport BaseInput from '../BaseInput.js';\n\nfunction countInputs(inputs) {\n return oktaUnderscore.filter(inputs || [], function (input) {\n return !oktaUnderscore.contains(['label', 'button', 'select'], input.type);\n }).length;\n}\n\nconst InputGroupLabelInput = BaseInput.extend({\n tagName: 'span',\n initialize: function () {\n this.$el.text(this.getModelValue());\n },\n editMode: function () {\n this.toggle(true);\n },\n readMode: function () {\n this.toggle(false);\n },\n getModelValue: function () {\n return this.options.label;\n },\n toggle: function (isEditMode) {\n this.$el.toggleClass('o-form-label-inline', isEditMode);\n this.$el.toggleClass('o-form-control', !isEditMode);\n },\n focus: oktaUnderscore.noop\n});\n\nfunction createButtonInput(options) {\n return ButtonFactory.create(oktaUnderscore.defaults({\n getReadModeString: oktaUnderscore.constant(' '),\n focus: oktaUnderscore.noop\n }, oktaUnderscore.pick(options, 'click', 'title', 'href', 'icon')));\n}\n\nconst InputGroupInputGroupView = BaseView.extend({\n getParams: BaseInput.prototype.getParams,\n getParam: BaseInput.prototype.getParam,\n className: function () {\n let className; // Allows views to group multiple inputs under one label without any of the other\n // styling/rendering changes that come with using a group input\n\n if (this.getParam('noBaseClasses')) {\n return '';\n }\n\n if (this.getParam('display') === 'text') {\n className = 'o-form-input-group-subtle';\n } else {\n className = 'o-form-input-group';\n }\n\n if (countInputs(this.getParam('inputs')) > 1) {\n className += ' o-form-input-group-2';\n }\n\n return className;\n },\n initialize: function () {\n oktaUnderscore.each(this.getParam('inputs'), function (input) {\n switch (input.type) {\n case 'label':\n this.add(InputGroupLabelInput, {\n options: input\n });\n break;\n\n case 'button':\n this.add(createButtonInput(input));\n break;\n\n default:\n input = oktaUnderscore.defaults({\n model: this.model,\n params: oktaUnderscore.extend({\n autoWidth: true\n }, input.params || {})\n }, input);\n this.add(this.getParams().create(input));\n }\n }, this);\n },\n focus: function () {\n this.first().focus();\n }\n});\nvar InputGroup = BaseInput.extend({\n constructor: function (options) {\n this.inputGroupView = new InputGroupInputGroupView(options);\n BaseInput.apply(this, arguments);\n },\n editMode: function () {\n this.inputGroupView.remove();\n this.inputGroupView = new InputGroupInputGroupView(this.options);\n this.$el.html(this.inputGroupView.render().el);\n },\n readMode: function () {\n // Allows the user to use to the default \"read mode\" of the child inputs instead of\n // rendering a single read mode string for all the child inputs\n if (this.getParam('useChildInputsReadMode')) {\n this.editMode();\n } else {\n BaseInput.prototype.readMode.apply(this, arguments);\n }\n },\n toStringValue: function () {\n const strings = this.inputGroupView.map(function (input) {\n return input.getReadModeString();\n });\n return strings.length && oktaUnderscore.every(strings) ? strings.join(' ') : ' ';\n },\n focus: function () {\n this.inputGroupView.focus();\n }\n}, {\n // test hooks\n LabelInput: InputGroupLabelInput,\n InputGroupView: InputGroupInputGroupView\n});\n\nexport { InputGroup as default };\n","import oktaJQueryStatic from '../courage/util/jquery-wrapper.js';\n\n/*!\n * jQuery UI Scroll Parent @VERSION\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Modifications Copyright 2021 Okta, Inc.\n */\n// This is required because SIW doesn't want to include jqueryui even though it's an external dependency of courage\n\noktaJQueryStatic.fn.scrollParent = function (includeHidden) {\n const position = this.css(\"position\"),\n excludeStaticParent = position === \"absolute\",\n overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n scrollParent = this.parents().filter(function () {\n const parent = oktaJQueryStatic(this);\n\n if (excludeStaticParent && parent.css(\"position\") === \"static\") {\n return false;\n }\n\n return overflowRegex.test(parent.css(\"overflow\") + parent.css(\"overflow-y\") + parent.css(\"overflow-x\"));\n }).eq(0);\n return position === \"fixed\" || !scrollParent.length ? oktaJQueryStatic(this[0].ownerDocument || document) : scrollParent;\n};\n","import BaseCollection from './courage/models/BaseCollection.js';\nexport { default as BaseModel } from './courage/models/BaseModel.js';\nimport BaseSchema from './courage/models/BaseSchema.js';\nexport { default as Model } from './courage/models/Model.js';\nimport SchemaProperty from './courage/models/SchemaProperty.js';\nimport BaseController from './courage/util/BaseController.js';\nimport BaseRouter from './courage/util/BaseRouter.js';\nimport ButtonFactory from './courage/util/ButtonFactory.js';\nimport Class from './courage/util/Class.js';\nimport Cookie from './courage/util/Cookie.js';\nimport Clipboard from './courage/util/Clipboard.js';\nimport Keys from './courage/util/Keys.js';\nimport Logger from './courage/util/Logger.js';\nimport StringUtil from './courage/util/StringUtil.js';\nimport Util from './courage/util/Util.js';\nexport { default as Handlebars } from '../lib/handlebars/dist/cjs/handlebars.runtime.js';\nimport './courage/util/handlebars/handle-url.js';\nimport './courage/util/handlebars/helper-i18n.js';\nexport { default as $ } from './courage/util/jquery-wrapper.js';\nexport { default as _ } from './courage/util/underscore-wrapper.js';\nexport { default as ListView } from './courage/views/Backbone.ListView.js';\nimport BaseView from './courage/views/BaseView.js';\nimport BaseDropDown from './courage/views/components/BaseDropDown.js';\nimport Notification from './courage/views/components/Notification.js';\nimport BaseForm from './courage/views/forms/BaseForm.js';\nimport Toolbar from './courage/views/forms/components/Toolbar.js';\nimport FormUtil from './courage/views/forms/helpers/FormUtil.js';\nimport InputRegistry from './courage/views/forms/helpers/InputRegistry.js';\nimport SchemaFormFactory from './courage/views/forms/helpers/SchemaFormFactory.js';\nimport BaseInput from './courage/views/forms/BaseInput.js';\nimport CheckBox from './courage/views/forms/inputs/CheckBox.js';\nimport PasswordBox from './courage/views/forms/inputs/PasswordBox.js';\nimport Radio from './courage/views/forms/inputs/Radio.js';\nimport Select from './courage/views/forms/inputs/Select.js';\nimport InputGroup from './courage/views/forms/inputs/InputGroup.js';\nimport TextBox from './courage/views/forms/inputs/TextBox.js';\nimport Callout from './courage/views/components/Callout.js';\nexport { default as Backbone } from './courage/vendor/lib/backbone.js';\nimport FrameworkView from './courage/framework/View.js';\nexport { default as FrameworkView } from './courage/framework/View.js';\nimport './util/scrollParent.js';\nexport { isModelPropertySchema } from './courage/framework/Model.js';\nimport './courage/util/SettingsModel.js';\n\nconst Controller = BaseController.extend({\n // The courage BaseController renders asynchronously in current versions of jQuery\n // https://github.com/okta/okta-ui/blob/master/packages/courage/src/util/BaseController.ts#L117-L119\n // https://api.jquery.com/jquery/#jQuery-callback\n // Override so that render is synchronous\n render: function (...args) {\n BaseView.prototype.render.apply(this, args);\n return this;\n }\n});\n\nSelect.prototype.remove = function () {\n // Patched to remove unneeded call to\n // this.$select.trigger('remove');\n // which causes error on IE11\n return BaseInput.prototype.remove.apply(this, arguments);\n}; // The string will be returned unchanged. All templates should be precompiled.\n\n\nFrameworkView.prototype.compileTemplate = function (str) {\n const compiledTmpl = function fakeTemplate() {\n return str;\n };\n\n compiledTmpl.source = ''; // to satisfy TS\n\n return compiledTmpl;\n}; // Override events to not support `Enter` submitting the form twice - OKTA-321999 and OKTA-317629\n\n\nconst events = {\n 'input input': 'update',\n 'change input': 'update',\n 'keydown input': 'update',\n 'keyup input': function (e) {\n if (Keys.isEsc(e)) {\n this.model.trigger('form:cancel');\n }\n }\n};\nconst TextBoxForSigninWidget = TextBox.extend({\n events: events\n});\nconst PasswordBoxForSigninWidget = PasswordBox.extend({\n events: events\n});\nconst Form = BaseForm.extend({\n scrollOnError: function () {\n // scrollOnError is true by default. Override to false if `scrollOnError` has been set to false in widget settings.\n const {\n settings: settings\n } = this.options;\n\n if (settings.get('features.scrollOnError') === false) {\n return false;\n }\n\n return true;\n }\n});\nconst loc = StringUtil.localize;\nconst createButton = ButtonFactory.create;\nconst createCallout = Callout.create;\nconst registerInput = InputRegistry.register;\nconst Collection = BaseCollection;\nconst View = BaseView;\nconst Router = BaseRouter;\nconst internal = {\n util: {\n Util: Util,\n Cookie: Cookie,\n Clipboard: Clipboard,\n Logger: Logger,\n Class: Class,\n Keys: Keys\n },\n views: {\n components: {\n BaseDropDown: BaseDropDown,\n Notification: Notification\n },\n forms: {\n helpers: {\n FormUtil: FormUtil,\n SchemaFormFactory: SchemaFormFactory\n },\n components: {\n Toolbar: Toolbar\n },\n inputs: {\n TextBox: TextBoxForSigninWidget,\n PasswordBox: PasswordBoxForSigninWidget,\n CheckBox: CheckBox,\n Radio: Radio,\n Select: Select,\n InputGroup: InputGroup\n }\n }\n },\n models: {\n BaseSchema: BaseSchema,\n SchemaProperty: SchemaProperty\n }\n};\nregisterInput('text', TextBoxForSigninWidget);\nregisterInput('password', PasswordBoxForSigninWidget);\nregisterInput('checkbox', CheckBox);\nregisterInput('radio', Radio);\nregisterInput('select', Select);\nregisterInput('group', InputGroup);\n\nexport { Collection, Controller, Form, Router, View, createButton, createCallout, internal, loc, registerInput };\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default {\n API_RATE_LIMIT: 30000, //milliseconds\n\n WIDGET_LOGIN_CONTAINER_ID: 'okta-login-container',\n WIDGET_CONTAINER_ID: 'okta-sign-in',\n WIDGET_CONFIG_COLORS_ID: 'okta-sign-in-config-colors',\n\n DIRECTION_BACK: 'DIRECTION_BACK',\n\n RECOVERY_TYPE_PASSWORD: 'PASSWORD',\n RECOVERY_TYPE_UNLOCK: 'UNLOCK',\n RECOVERY_FACTOR_TYPE_SMS: 'SMS',\n RECOVERY_FACTOR_TYPE_EMAIL: 'EMAIL',\n RECOVERY_FACTOR_TYPE_CALL: 'CALL',\n\n IOS: 'ios',\n ANDROID: 'android',\n\n ODA: 'oda',\n MDM: 'mdm',\n\n // Global success messages\n SUCCESS: 'SUCCESS',\n FORGOT_PASSWORD_EMAIL_SENT: 'FORGOT_PASSWORD_EMAIL_SENT',\n UNLOCK_ACCOUNT_EMAIL_SENT: 'UNLOCK_ACCOUNT_EMAIL_SENT',\n\n // Global error messages\n CONFIG_ERROR: 'CONFIG_ERROR',\n UNSUPPORTED_BROWSER_ERROR: 'UNSUPPORTED_BROWSER_ERROR',\n OAUTH_ERROR: 'OAUTH_ERROR',\n AUTH_STOP_POLL_INITIATION_ERROR: 'AUTH_STOP_POLL_INITIATION_ERROR',\n U2F_ERROR: 'U2F_ERROR',\n WEB_AUTHN_ERROR: 'WEB_AUTHN_ERROR',\n WEBAUTHN_ABORT_ERROR: 'WEBAUTHN_ABORT_ERROR',\n CONFIGURED_FLOW_ERROR: 'CONFIGURED_FLOW_ERROR',\n\n // Enroll choice page types\n ALL_OPTIONAL_NONE_ENROLLED: 'ALL_OPTIONAL_NONE_ENROLLED',\n ALL_OPTIONAL_SOME_ENROLLED: 'ALL_OPTIONAL_SOME_ENROLLED',\n HAS_REQUIRED_NONE_ENROLLED: 'HAS_REQUIRED_NONE_ENROLLED',\n HAS_REQUIRED_SOME_REQUIRED_ENROLLED: 'HAS_REQUIRED_SOME_REQUIRED_ENROLLED',\n HAS_REQUIRED_ALL_REQUIRED_ENROLLED: 'HAS_REQUIRED_ALL_REQUIRED_ENROLLED',\n\n // Operations\n PRIMARY_AUTH: 'PRIMARY_AUTH',\n FORGOT_PASSWORD: 'FORGOT_PASSWORD',\n UNLOCK_ACCOUNT: 'UNLOCK_ACCOUNT',\n\n // Auth Types\n SESSION_SSO: 'SESSION_SSO',\n SESSION_STEP_UP: 'SESSION_STEP_UP',\n\n //Registration\n ACTIVATION_EMAIL_SENT: 'ACTIVATION_EMAIL_SENT',\n REGISTRATION_COMPLETE: 'REGISTRATION_COMPLETE',\n REGISTRATION_FAILED: 'REGISTRATION_FAILED',\n\n //IDP Discovery\n IDP_DISCOVERY: 'IDP_DISCOVERY',\n\n //App Store Links\n OKTA_VERIFY_APPLE_APP_STORE_URL: 'https://apps.apple.com/us/app/okta-verify/id490179405',\n OKTA_VERIFY_GOOGLE_PLAY_STORE_URL: 'https://play.google.com/store/apps/details?id=com.okta.android.auth',\n\n // Device Challenge Method\n LOOPBACK_CHALLENGE: 'LOOPBACK',\n CUSTOM_URI_CHALLENGE: 'CUSTOM_URI',\n UNIVERSAL_LINK_CHALLENGE: 'UNIVERSAL_LINK',\n APP_LINK_CHALLENGE: 'APP_LINK',\n CHROME_DTC: 'CHROME_DTC',\n\n};\n","/* eslint-disable max-statements */\n/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 13], max-depth: [2, 3] */\nimport { _, loc } from '@okta/courage';\nimport Enums from './Enums';\nimport Logger from './Logger';\nimport BrowserFeatures from './BrowserFeatures';\n\nconst Util = {};\nconst ovDeepLink = 'redirect_uri=https://login.okta.com/oauth/callback';\n\nconst buildInputForParameter = function(name, value) {\n const input = document.createElement('input');\n\n input.name = name;\n input.value = decodeURIComponent(value);\n input.type = 'hidden';\n return input;\n};\n\nconst buildSubmitInput = function() {\n const input = document.createElement('input');\n input.type = 'submit';\n return input;\n};\n\nconst buildDynamicForm = function(url = '', method) {\n const splitOnFragment = url.split('#');\n const fragment = splitOnFragment[1];\n const splitOnQuery = (splitOnFragment[0] || '').split('?');\n const query = splitOnQuery[1];\n let targetUrl = splitOnQuery[0];\n\n if (fragment) {\n targetUrl += '#' + fragment;\n }\n\n const form = document.createElement('form');\n\n form.method = method;\n form.style.display = 'none';\n form.action = targetUrl;\n if (query && query.length) {\n const queryParts = query.split('&');\n\n queryParts.forEach(queryPart => {\n const parameterParts = queryPart.split('=');\n const input = buildInputForParameter(parameterParts[0], parameterParts[1]);\n\n form.appendChild(input);\n });\n }\n form.appendChild(buildSubmitInput());\n\n return form;\n};\n\n// eslint-disable-next-line complexity\nUtil.transformErrorXHR = function(xhr) {\n // Handle network connection error\n if (xhr.status === 0 && _.isEmpty(xhr.responseJSON)) {\n xhr.responseJSON = { errorSummary: loc('error.network.connection', 'login') };\n return xhr;\n }\n if (!xhr.responseJSON) {\n if (!xhr.responseText) {\n // Empty server response\n xhr.responseJSON = { errorSummary: loc('error.unsupported.response', 'login') };\n return xhr;\n }\n if (typeof xhr.responseText === 'string') {\n try {\n xhr.responseJSON = JSON.parse(xhr.responseText);\n } catch (e) {\n // Malformed server response\n xhr.responseJSON = { errorSummary: loc('error.unsupported.response', 'login') };\n return xhr;\n }\n } else if (typeof xhr.responseText === 'object') {\n xhr.responseJSON = xhr.responseText;\n }\n }\n // Temporary solution to display field errors\n // Assuming there is only one field error in a response\n if (xhr.responseJSON && xhr.responseJSON.errorCauses && xhr.responseJSON.errorCauses.length) {\n xhr.responseJSON.errorSummary = xhr.responseJSON.errorCauses[0].errorSummary;\n }\n // Replace error messages\n if (!_.isEmpty(xhr.responseJSON)) {\n const errorMsg = loc('errors.' + xhr.responseJSON.errorCode, 'login');\n\n if (errorMsg.indexOf('L10N_ERROR[') === -1) {\n xhr.responseJSON.errorSummary = errorMsg;\n if (xhr.responseJSON && xhr.responseJSON.errorCauses && xhr.responseJSON.errorCauses.length) {\n // BaseForm will consume errorCauses before errorSummary if it is an array,\n // so, we have to make sure to remove it when we have a valid error code\n delete xhr.responseJSON.errorCauses;\n }\n }\n }\n return xhr;\n};\n\n// Simple helper function to lowercase all strings in the given array\nUtil.toLower = function(strings) {\n return _.map(strings, function(str) {\n return str.toLowerCase();\n });\n};\n\n// A languageCode can be composed of multiple parts, i.e:\n// {{language}}-{{region}}-{{dialect}}\n//\n// In these cases, it's necessary to generate a list of other possible\n// combinations that we might support (in preferred order).\n//\n// For example:\n// en-US -> [en-US, en]\n// de-DE-bavarian -> [de-DE-bavarian, de-DE, de]\nfunction expandLanguage(language) {\n const expanded = [language];\n const parts = language.split('-');\n\n while (parts.pop() && parts.length > 0) {\n expanded.push(parts.join('-'));\n }\n return expanded;\n}\n\n// Following the rules of expanding one language, this will generate\n// all potential languages in the given order (where higher priority is\n// given to expanded languages over other downstream languages).\nUtil.expandLanguages = function(languages) {\n return _.chain(languages).map(expandLanguage).flatten().uniq().value();\n};\n\n//helper to call setTimeout\nUtil.callAfterTimeout = function(callback, time) {\n return setTimeout(callback, time);\n};\n\n// Helper function to provide consistent formatting of template literals\n// that are logged when in development mode.\nUtil.debugMessage = function(message) {\n Logger.warn(`\\n${message.replace(/^(\\s)+/gm, '')}`);\n};\n\nUtil.logConsoleError = function(message) {\n Logger.error(message);\n};\n\n// Trigger an afterError event\nUtil.triggerAfterError = function(controller, err = {}) {\n if (!err.statusCode && err.xhr && err.xhr.status) {\n // Bring the statusCode to the top-level of the Error\n err.statusCode = err.xhr.status;\n }\n // Some controllers return the className as a function - process it here:\n const className = _.isFunction(controller.className) ? controller.className() : controller.className;\n\n const error = _.pick(err, 'name', 'message', 'statusCode', 'xhr');\n\n controller.trigger('afterError', { controller: className }, error);\n // Logs to console only in dev mode\n Logger.warn('controller: ' + className + ', error: ' + error);\n};\n\nUtil.redirect = function(url, win = window, isAppLink = false) {\n if (!url) {\n Logger.error(`Cannot redirect to empty URL: (${url})`);\n return;\n }\n if (BrowserFeatures.isAndroid() && !isAppLink) {\n Util.redirectWithFormGet(url);\n } else {\n win.location.href = url;\n }\n};\n\nUtil.isAndroidOVEnrollment = function() {\n const ovEnrollment = decodeURIComponent(window.location.href).includes(ovDeepLink);\n return BrowserFeatures.isAndroid() && ovEnrollment;\n};\n\n/**\n * Why redirect via Form get rather using `window.location.href`?\n * At the time of writing, Chrome (<72) in Android would block window location change\n * at following case\n * 1. An AJAX is trigger because of user action.\n * 2. 5+ seconds passed without any further user interaction.\n * 3. User takes an action results in window location change.\n *\n * Luckily we discovered that uses Form submit would work around this problem\n * even though it changed window location.\n *\n * Check the commit history for more details.\n */\nUtil.redirectWithFormGet = function(url) {\n Util.redirectWithForm(url, 'get');\n};\n\nUtil.redirectWithForm = function(url, method = 'post') {\n if (!url) {\n Logger.error(`Cannot redirect to empty URL: (${url})`);\n return;\n }\n\n const mainContainer = document.getElementById(Enums.WIDGET_CONTAINER_ID);\n\n if (!mainContainer) {\n Logger.error('Cannot find okta-sign-in container append to which a form');\n return;\n }\n\n const form = buildDynamicForm(url, method);\n\n mainContainer.appendChild(form);\n form.querySelector('input[type=\"submit\"]').click();\n};\n\n/**\n * When we want to show an explain text, we need to check if this is different from\n * the label text, to not have an explain that look like a duplicated label.\n * okta-signin-widget gives the possibility to customize every i18n, so we cannot\n * know ahead if these two are equal or different, we need to call this function everytime.\n */\nUtil.createInputExplain = function(explainKey, labelKey, bundleName, explainParams, labelParams) {\n const explain = explainParams ? loc(explainKey, bundleName, explainParams) : loc(explainKey, bundleName);\n const label = labelParams ? loc(labelKey, bundleName, labelParams) : loc(labelKey, bundleName);\n\n if (explain === label) {\n return false;\n }\n return explain;\n};\n\nUtil.isV1StateToken = function(token) {\n return !!(token && _.isString(token) && token.startsWith('00'));\n};\n\nUtil.getAutocompleteValue = function(settings, defaultValue) {\n const shouldDisableAutocomplete = settings?.get('features.disableAutocomplete');\n if (shouldDisableAutocomplete) {\n return 'off';\n }\n return defaultValue;\n};\n\nexport default Util;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, Model } from '@okta/courage';\nimport Q from 'q';\nimport Enums from 'util/Enums';\nconst KNOWN_ERRORS = ['OAuthError', 'AuthSdkError', 'AuthPollStopError', 'AuthApiError'];\nexport default Model.extend({\n // May return either a \"standard\" promise or a Q promise\n doTransaction: function(fn, rethrow) {\n const self = this;\n\n return fn\n .call(this, this.appState.get('transaction'))\n .then(function(trans) {\n self.trigger('setTransaction', trans);\n return trans;\n })\n .catch(function(err) {\n // Q may still consider AuthPollStopError to be unhandled\n if (\n err.name === 'AuthPollStopError' ||\n err.name === Enums.AUTH_STOP_POLL_INITIATION_ERROR ||\n err.name === Enums.WEBAUTHN_ABORT_ERROR\n ) {\n return;\n }\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n if (rethrow || _.indexOf(KNOWN_ERRORS, err.name) === -1) {\n throw err;\n }\n });\n },\n\n manageTransaction: function(fn) {\n const self = this;\n const res = fn.call(this, this.appState.get('transaction'), _.bind(this.setTransaction, this));\n\n // If it's a promise, listen for failures\n if (Q.isPromiseAlike(res)) {\n return res.catch(function(err) {\n if (\n err.name === 'AuthPollStopError' ||\n err.name === Enums.AUTH_STOP_POLL_INITIATION_ERROR ||\n err.name === Enums.WEBAUTHN_ABORT_ERROR\n ) {\n return;\n }\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n });\n }\n\n return Q.resolve(res);\n },\n\n startTransaction: function(fn) {\n const self = this;\n const res = fn.call(this, this.settings.getAuthClient());\n\n // If it's a promise, then chain to it\n if (Q.isPromiseAlike(res)) {\n return res\n .then(function(trans) {\n self.trigger('setTransaction', trans);\n return trans;\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n self.trigger('setTransactionError', err);\n throw err;\n });\n }\n\n return Q.resolve(res);\n },\n\n setTransaction: function(trans) {\n this.appState.set('transaction', trans);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, Form, Controller } from '@okta/courage';\nimport Q from 'q';\n\nfunction getForm(controller) {\n return _.find(controller.getChildren(), function(item) {\n return item instanceof Form;\n });\n}\n\nexport default Controller.extend({\n // Ideally we should be attaching the listeners in the constructor, but because of the way\n // we construct the FormController (this.model is generated after the BaseLoginController's\n // constructor is called), this.model is undefined in when try to attach the events and\n // therefore we don't listen to events for such forms. And changing the order in which we call\n // the constructor doesn't help either (JS errors etc.). This at least guarantees that we\n // are listening to the model events.\n // Note - Figure out a way to call the constructor in the right order.\n addListeners: function() {\n // Events to enable/disable the primary button on the forms\n this.listenTo(this.model, 'save', function() {\n const form = getForm(this);\n //disable the submit button on forms while making the request\n //to prevent users from hitting rate limiting exceptions of\n //1 per second on the auth api\n\n const disableSubmitButton = form.disableSubmitButton;\n\n if (disableSubmitButton && !form.disableSubmitButton()) {\n return;\n }\n this.toggleButtonState(true);\n });\n\n this.listenTo(this.model, 'error', function() {\n this.toggleButtonState(false);\n });\n\n this.addModelListeners(this.model);\n },\n\n addModelListeners: function(model) {\n const setTransactionHandler = transaction => {\n this.options.appState.set('transaction', transaction);\n };\n\n const transactionErrorHandler = err => {\n this.options.appState.set('transactionError', err);\n };\n\n // Events to set the transaction attributes on the app state.\n this.listenTo(model, 'setTransaction', setTransactionHandler);\n this.listenTo(model, 'setTransactionError', transactionErrorHandler);\n\n // For TOTP factor model\n // TOTP model is special, its model will not be attached to a controller, but will\n // tag along with the push factor model. We need to listen to the transaction\n // changes on this as well (in case of the push+totp form).\n const totpModel = model.get('backupFactor');\n\n if (totpModel) {\n this.listenTo(totpModel, 'setTransaction', setTransactionHandler);\n this.listenTo(totpModel, 'setTransactionError', transactionErrorHandler);\n }\n },\n\n // Override this method to delay switching to this screen until return\n // promise is resolved. This is useful for cases like enrolling a security\n // question, which requires an additional request to fetch the question\n // list.\n fetchInitialData: function() {\n return Q();\n },\n\n // Override this method to prevent route navigation. This is useful for\n // intermediate status changes that do not trigger a full refresh of the\n // page, like MFA_ENROLL_ACTIVATE and MFA_CHALLENGE.\n trapAuthResponse: function() {\n return false;\n },\n\n toJSON: function() {\n const data = Controller.prototype.toJSON.apply(this, arguments);\n\n return _.extend(_.pick(this.options, 'appState'), data);\n },\n\n toggleButtonState: function(state) {\n const button = this.$el.find('.button');\n\n button.toggleClass('link-button-disabled', state).prop('disabled', state);\n },\n\n postRenderAnimation: function() {\n // Event triggered after a page is rendered along with the classname to identify the page\n // TODO: Deprecate this event in the next major version in favor of 'afterRender'\n this.trigger('pageRendered', { page: this.className });\n\n this.trigger('afterRender', { controller: this.className });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst INPUT = 'INPUT';\n\n// Syntactic sugar to provide some structure to SimpleForm inputs - Just\n// wraps options with { type: type, viewOptions: viewOptions, addOptions: addOptions }\n\nconst BUTTON = 'BUTTON';\nconst DIVIDER = 'DIVIDER';\nconst TOOLBAR = 'TOOLBAR';\nconst VIEW = 'VIEW';\n\nfunction wrap(type) {\n return function(viewOptions, addOptions) {\n return { type: type, viewOptions: viewOptions, addOptions: addOptions };\n };\n}\n\nexport default {\n Input: wrap(INPUT),\n Button: wrap(BUTTON),\n Divider: wrap(DIVIDER),\n Toolbar: wrap(TOOLBAR),\n View: wrap(VIEW),\n\n INPUT: INPUT,\n BUTTON: BUTTON,\n DIVIDER: DIVIDER,\n TOOLBAR: TOOLBAR,\n VIEW: VIEW,\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, internal, Form, createButton } from '@okta/courage';\nimport BaseLoginModel from 'v1/models/BaseLoginModel';\nimport BaseLoginController from './BaseLoginController';\nimport FormType from './FormType';\nlet { Toolbar } = internal.views.forms.components;\nlet { FormUtil } = internal.views.forms.helpers;\nconst FormControllerSimpleForm = Form.extend({\n layout: 'o-form-theme',\n noCancelButton: true,\n constructor: function(options) {\n Form.call(this, options);\n _.each(\n _.result(this, 'formChildren') || [],\n function(child) {\n switch (child.type) {\n case FormType.INPUT:\n this.addInput(\n _.extend(\n {\n label: false,\n 'label-top': true,\n },\n child.viewOptions\n )\n );\n break;\n case FormType.BUTTON:\n this.add(createButton(_.extend({ model: this.model }, child.viewOptions)), child.addOptions);\n FormUtil.applyShowWhen(this.last(), child.viewOptions && child.viewOptions.showWhen);\n break;\n case FormType.DIVIDER:\n this.addDivider(child.viewOptions);\n break;\n case FormType.TOOLBAR:\n this.add(Toolbar, { options: child.viewOptions });\n FormUtil.applyShowWhen(this.last(), child.viewOptions && child.viewOptions.showWhen);\n break;\n case FormType.VIEW:\n this.add(child.viewOptions.View, child.addOptions);\n FormUtil.applyShowWhen(this.last(), child.viewOptions.showWhen);\n break;\n default:\n throw new Error('Unrecognized child type: ' + child.type);\n }\n },\n this\n );\n },\n});\nexport default BaseLoginController.extend({\n constructor: function() {\n const initialize = this.initialize;\n\n this.initialize = function() {};\n\n BaseLoginController.apply(this, arguments);\n\n if (this.Model && this.Form) {\n const Model = BaseLoginModel.extend(\n _.extend(\n {\n parse: function(attributes) {\n this.settings = attributes.settings;\n this.appState = attributes.appState;\n return _.omit(attributes, ['settings', 'appState']);\n },\n },\n _.result(this, 'Model')\n )\n );\n\n this.model = new Model(\n {\n settings: this.settings,\n appState: this.options.appState,\n },\n { parse: true }\n );\n const Form = FormControllerSimpleForm.extend(_.result(this, 'Form', this));\n\n this.form = new Form(this.toJSON());\n this.add(this.form);\n }\n\n if (this.Footer) {\n this.addFooter(this.Footer);\n }\n\n this.addListeners();\n initialize.apply(this, arguments);\n },\n\n addFooter: function(Footer, args) {\n this.footer = new Footer(_.extend(this.toJSON(), args || {}));\n this.add(this.footer);\n },\n\n toJSON: function() {\n const data = BaseLoginController.prototype.toJSON.apply(this, arguments);\n\n return _.extend(_.pick(this.options, 'appState'), data);\n },\n\n back: function() {\n if (this.footer && this.footer.back) {\n this.footer.back();\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nexport default FormController.extend({\n className: 'account-unlocked',\n Model: function() {\n return {\n local: {\n userFullName: ['string', false, this.options.appState.get('userFullName')],\n },\n };\n },\n\n Form: {\n title: _.partial(loc, 'account.unlock.unlocked.title', 'login'),\n subtitle: _.partial(loc, 'account.unlock.unlocked.desc', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'account-unlocked' },\n formChildren: function() {\n return [\n FormType.Button({\n title: loc('goback', 'login'),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'back-button' },\n click: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n }),\n ];\n },\n },\n});\n","import toMilliseconds from '@sindresorhus/to-milliseconds';\nimport parseMs from 'parse-ms';\n\nconst MOMENT_UNIT = {\n MILLISECOND: 'milliseconds',\n SECOND: 'seconds',\n MINUTE: 'minutes',\n HOUR: 'hours',\n DAY: 'days',\n};\n\nconst MOMENT_UNIT_KEYS = Object.keys(MOMENT_UNIT);\n\n/**\n * @method convertMomentUnits\n * Conversion between moment's units and our units internally\n *\n * @param {String} momentUnit The units that val is in\n * @return {String} The key in the MOMENT_UNIT hash\n */\nconst convertMomentUnits = function(momentUnit) {\n const entry = MOMENT_UNIT_KEYS.filter(k => MOMENT_UNIT[k] === momentUnit);\n\n return entry.length === 1 ? entry[0] : momentUnit;\n};\n\nexport default {\n /**\n * @method getTimeInHighestRelevantUnit\n * Will return a number in the units of the highest relevant time unit.\n * Only checks milliseconds, seconds, minutes, hours, and days.\n * E.g.\n * 15 MINUTE -> 15 MINUTE\n * 15 minutes -> 15 MINUTE\n * 60 minutes -> 1 HOUR\n * 90 minutes -> 90 MINUTE\n * 24 HOUR -> 1 DAY\n * 24 hours -> 1 DAY\n * 30 DAY -> 30 DAY\n *\n * @typedef { \"MILLISECOND\" | \"SECOND\" | \"MINUTE\" | \"HOUR\" | \"DAY\" } TimeUnit\n *\n * @typedef { \"MILLISECOND\" | \"SECOND\" | \"MINUTE\" | \"HOUR\" | \"DAY\" |\n * \"milliseconds\" | \"seconds\" | \"minutes\" | \"hours\" | \"days\"\n * } FlexibleTimeUnit\n *\n * @typedef TimeAndUnit\n * @property {number} time the consolidated time\n * @property {TimeUnit} unit the unit of the time\n *\n * @param {FlexibleTimeUnit} unit The time unit\n * @return {TimeAndUnit} An object containing the amount of time and the unit\n */\n getTimeInHighestRelevantUnit: function(val, unit) {\n const defaultTimeObj = {\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0,\n };\n const normalizedUnit = MOMENT_UNIT[unit] || unit;\n let timeObj;\n\n try {\n const ms = toMilliseconds(Object.assign(defaultTimeObj, { [normalizedUnit]: val }));\n timeObj = parseMs(ms);\n } catch (error) {\n timeObj = {};\n }\n\n const duration = Object.keys(timeObj).reduce((init, k) => {\n if (timeObj[k] !== 0) {\n init[k] = timeObj[k];\n }\n return init;\n }, {});\n\n let highestUnit;\n let time;\n if (Object.keys(duration).length === 1) {\n Object.keys(duration).forEach(k => {\n time = duration[k];\n highestUnit = k;\n });\n } else {\n time = val;\n highestUnit = normalizedUnit;\n }\n\n return {\n time: time,\n unit: convertMomentUnits(highestUnit),\n };\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 38], max-statements: [2, 38] */\nimport { _, loc } from '@okta/courage';\nimport TimeUtil from 'util/TimeUtil';\nconst fn = {};\nconst factorData = {\n OKTA_VERIFY: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpSoft.oktaVerify',\n description: 'factor.totpSoft.description',\n iconClassName: 'mfa-okta-verify',\n sortOrder: 1,\n },\n OKTA_VERIFY_PUSH: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.oktaVerifyPush',\n description: 'factor.push.description',\n iconClassName: 'mfa-okta-verify',\n sortOrder: 1,\n },\n U2F: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.u2f',\n description: brandName => {\n return brandName ? 'factor.u2f.description.specific' : 'factor.u2f.description.generic';\n },\n iconClassName: 'mfa-u2f',\n sortOrder: 2,\n },\n WEBAUTHN: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.webauthn.biometric',\n description: 'factor.webauthn.biometric.description',\n iconClassName: 'mfa-webauthn',\n sortOrder: 2,\n },\n WINDOWS_HELLO: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.windowsHello',\n description: brandName => {\n return brandName\n ? 'factor.windowsHello.signin.description.specific'\n : 'factor.windowsHello.signin.description.generic';\n },\n iconClassName: 'mfa-windows-hello',\n sortOrder: 3,\n },\n YUBIKEY: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpHard.yubikey',\n description: 'factor.totpHard.yubikey.description',\n iconClassName: 'mfa-yubikey',\n sortOrder: 4,\n },\n GOOGLE_AUTH: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpSoft.googleAuthenticator',\n description: 'factor.totpSoft.description',\n iconClassName: 'mfa-google-auth',\n sortOrder: 5,\n },\n CUSTOM_HOTP: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: 'factor.hotp.description',\n iconClassName: 'mfa-hotp',\n sortOrder: 6,\n },\n SMS: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.sms',\n description: 'factor.sms.description',\n iconClassName: 'mfa-okta-sms',\n sortOrder: 7,\n },\n CALL: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.call',\n description: 'factor.call.description',\n iconClassName: 'mfa-okta-call',\n sortOrder: 8,\n },\n EMAIL: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.email',\n description: 'factor.email.description',\n iconClassName: 'mfa-okta-email',\n sortOrder: 9,\n },\n QUESTION: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.securityQuestion',\n description: 'factor.securityQuestion.description',\n iconClassName: 'mfa-okta-security-question',\n sortOrder: 10,\n },\n DUO: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.duo',\n description: 'factor.duo.description',\n iconClassName: 'mfa-duo',\n sortOrder: 11,\n },\n SYMANTEC_VIP: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpHard.symantecVip',\n description: 'factor.totpHard.description',\n iconClassName: 'mfa-symantec',\n sortOrder: 12,\n },\n RSA_SECURID: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.totpHard.rsaSecurId',\n description: 'factor.totpHard.description',\n iconClassName: 'mfa-rsa',\n sortOrder: 13,\n },\n ON_PREM: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: 'factor.totpHard.description',\n iconClassName: 'mfa-onprem',\n sortOrder: 14,\n },\n PASSWORD: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: 'factor.password',\n description: '',\n iconClassName: 'mfa-okta-password',\n sortOrder: 15,\n },\n CUSTOM_CLAIMS: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: 'factor.customFactor.description',\n iconClassName: 'mfa-custom-factor',\n sortOrder: 16,\n },\n GENERIC_SAML: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: brandName => {\n return brandName ? 'factor.customFactor.description.specific' : 'factor.customFactor.description.generic';\n },\n iconClassName: 'mfa-custom-factor',\n sortOrder: 17,\n },\n GENERIC_OIDC: {\n /* eslint-disable-next-line @okta/okta/no-unlocalized-text */\n label: '',\n description: brandName => {\n return brandName ? 'factor.customFactor.description.specific' : 'factor.customFactor.description.generic';\n },\n iconClassName: 'mfa-custom-factor',\n sortOrder: 18,\n },\n};\n\nconst getPasswordComplexityRequirementsAsArray = function(policy, i18nKeys) {\n const setExcludeAttributes = function(policyComplexity) {\n const excludeAttributes = policyComplexity.excludeAttributes;\n\n policyComplexity.excludeFirstName = _.contains(excludeAttributes, 'firstName');\n policyComplexity.excludeLastName = _.contains(excludeAttributes, 'lastName');\n return _.omit(policyComplexity, 'excludeAttributes');\n };\n\n if (policy.complexity) {\n const complexityFields = i18nKeys.complexity;\n const policyComplexity = setExcludeAttributes(policy.complexity);\n\n const requirements = _.map(policyComplexity, function(complexityValue, complexityType) {\n if (complexityValue <= 0) {\n // to skip 0 and -1\n return;\n }\n\n const params = complexityFields[complexityType];\n\n return params.args ? loc(params.i18n, 'login', [complexityValue]) : loc(params.i18n, 'login');\n });\n\n return _.compact(requirements);\n }\n return [];\n};\n\nconst getPasswordHistoryRequirementDescription = function(policy, i18nKeys, isUpdatedPasswordRequirementsText) {\n if (policy.age && policy.age.historyCount > 0) {\n if (isUpdatedPasswordRequirementsText) {\n return policy.age.historyCount === 1 ?\n loc(i18nKeys.history.one.i18n, 'login')\n : loc(i18nKeys.history.many.i18n, 'login', [policy.age.historyCount]);\n } else {\n return loc(i18nKeys.history.i18n, 'login', [policy.age.historyCount]);\n }\n }\n return null;\n};\n\nconst getPasswordAgeRequirementDescription = function(policy, i18nKeys) {\n const getPasswordAgeRequirement = function(displayableTime) {\n let propertiesString;\n\n switch (displayableTime.unit) {\n case 'DAY':\n propertiesString = i18nKeys.age.days.i18n;\n break;\n case 'HOUR':\n propertiesString = i18nKeys.age.hours.i18n;\n break;\n case 'MINUTE':\n propertiesString = i18nKeys.age.minutes.i18n;\n }\n return loc(propertiesString, 'login', [displayableTime.time]);\n };\n\n if (policy.age && policy.age.minAgeMinutes > 0) {\n const displayableTime = TimeUtil.getTimeInHighestRelevantUnit(policy.age.minAgeMinutes, 'MINUTE');\n\n return getPasswordAgeRequirement(displayableTime);\n }\n return null;\n};\n\nconst getPasswordRequirements = function(policy, i18nKeys, isUpdatedPasswordRequirementsText) {\n const passwordRequirements = {\n complexity: [],\n history: [],\n age: [],\n };\n\n passwordRequirements.complexity = getPasswordComplexityRequirementsAsArray(policy, i18nKeys);\n\n const historyRequirement =\n getPasswordHistoryRequirementDescription(policy, i18nKeys, isUpdatedPasswordRequirementsText);\n\n if (historyRequirement) {\n passwordRequirements.history.push(historyRequirement);\n }\n\n const ageRequirement = getPasswordAgeRequirementDescription(policy, i18nKeys);\n\n if (ageRequirement) {\n passwordRequirements.age.push(ageRequirement);\n }\n\n return passwordRequirements;\n};\n\nfn.getFactorName = function(provider, factorType) {\n if (provider === 'OKTA' && factorType === 'token:software:totp') {\n return 'OKTA_VERIFY';\n }\n if (provider === 'OKTA' && factorType === 'push') {\n return 'OKTA_VERIFY_PUSH';\n }\n if (provider === 'GOOGLE') {\n return 'GOOGLE_AUTH';\n }\n if (provider === 'SYMANTEC' && factorType === 'token') {\n return 'SYMANTEC_VIP';\n }\n if (provider === 'RSA' && factorType === 'token') {\n return 'RSA_SECURID';\n }\n if (provider === 'DEL_OATH' && factorType === 'token') {\n return 'ON_PREM';\n }\n if (provider === 'DUO' && factorType === 'web') {\n return 'DUO';\n }\n if (provider === 'YUBICO' && factorType === 'token:hardware') {\n return 'YUBIKEY';\n }\n if (provider === 'OKTA' && factorType === 'sms') {\n return 'SMS';\n }\n if (provider === 'OKTA' && factorType === 'call') {\n return 'CALL';\n }\n if (provider === 'OKTA' && factorType === 'question') {\n return 'QUESTION';\n }\n if (provider === 'OKTA' && factorType === 'email') {\n return 'EMAIL';\n }\n if (provider === 'OKTA' && factorType === 'password') {\n return 'PASSWORD';\n }\n if (provider === 'GENERIC_SAML' && factorType === 'assertion:saml2') {\n return 'GENERIC_SAML';\n }\n if (provider === 'GENERIC_OIDC' && factorType === 'assertion:oidc') {\n return 'GENERIC_OIDC';\n }\n return fn.getFactorNameForFactorType.call(this, factorType);\n};\n\nfn.getFactorNameForFactorType = function(factorType) {\n if (factorType === 'u2f') {\n return 'U2F';\n }\n if (factorType === 'token:software:totp') {\n return 'OKTA_VERIFY';\n }\n if (factorType === 'webauthn') {\n if (this.settings.get('features.webauthn')) {\n return 'WEBAUTHN';\n } else {\n return 'WINDOWS_HELLO';\n }\n }\n if (factorType === 'token:hotp') {\n return 'CUSTOM_HOTP';\n }\n if (factorType === 'claims_provider') {\n return 'CUSTOM_CLAIMS';\n }\n};\n\nfn.isOktaVerify = function(provider, factorType) {\n return provider === 'OKTA' && (factorType === 'token:software:totp' || factorType === 'push');\n};\n\nfn.getFactorLabel = function(provider, factorType) {\n const key = factorData[fn.getFactorName.apply(this, [provider, factorType])].label;\n\n return loc(key, 'login');\n};\n\nfn.getFactorDescription = function(provider, factorType) {\n const descriptionKey = factorData[fn.getFactorName.apply(this, [provider, factorType])].description;\n\n if (_.isFunction(descriptionKey)) {\n const brandName = this.settings.get('brandName');\n const key = descriptionKey(brandName);\n\n return brandName ? loc(key, 'login', [brandName]) : loc(key, 'login');\n } else {\n return loc(descriptionKey, 'login');\n }\n};\n\nfn.getFactorIconClassName = function(provider, factorType) {\n return factorData[fn.getFactorName.apply(this, [provider, factorType])].iconClassName;\n};\n\nfn.getFactorSortOrder = function(provider, factorType) {\n return factorData[fn.getFactorName.apply(this, [provider, factorType])].sortOrder;\n};\n\nfn.getRememberDeviceValue = function(appState) {\n return appState && appState.get('rememberDeviceByDefault');\n};\n\nfn.getSecurityQuestionLabel = function(questionObj) {\n const localizedQuestion = loc('security.' + questionObj.question);\n\n return localizedQuestion.indexOf('L10N_ERROR') < 0 ? localizedQuestion : questionObj.questionText;\n};\n\nfn.removeRequirementsFromError = function(responseJSON, policy) {\n const passwordRequirementsAsString = this.getPasswordComplexityDescription(policy);\n\n if (\n responseJSON.errorCauses &&\n responseJSON.errorCauses.length > 0 &&\n _.isString(responseJSON.errorCauses[0].errorSummary)\n ) {\n responseJSON.errorCauses[0].errorSummary = responseJSON.errorCauses[0].errorSummary\n .replace(passwordRequirementsAsString, '')\n .trim();\n }\n return responseJSON;\n};\n\nfn.getPasswordComplexityDescriptionForHtmlList = function(policy) {\n const passwordRequirementHtmlI18nKeys = {\n complexity: {\n minLength: { i18n: 'password.complexity.length.description', args: true },\n minLowerCase: { i18n: 'password.complexity.lowercase.description' },\n minUpperCase: { i18n: 'password.complexity.uppercase.description' },\n minNumber: { i18n: 'password.complexity.number.description' },\n minSymbol: { i18n: 'password.complexity.symbol.description' },\n excludeUsername: { i18n: 'password.complexity.no_username.description' },\n excludeFirstName: { i18n: 'password.complexity.no_first_name.description' },\n excludeLastName: { i18n: 'password.complexity.no_last_name.description' },\n },\n history: {\n one: { i18n: 'password.complexity.history.one.description' },\n many: { i18n: 'password.complexity.history.description' }\n },\n age: {\n minutes: { i18n: 'password.complexity.minAgeMinutes.description' },\n hours: { i18n: 'password.complexity.minAgeHours.description' },\n days: { i18n: 'password.complexity.minAgeDays.description' },\n },\n };\n const passwordRequirements = getPasswordRequirements(policy, passwordRequirementHtmlI18nKeys, true);\n\n return _.union(passwordRequirements.complexity, passwordRequirements.history, passwordRequirements.age);\n};\n\nfn.getPasswordComplexityDescription = function(policy) {\n const passwordRequirementI18nKeys = {\n complexity: {\n minLength: { i18n: 'password.complexity.length', args: true },\n minLowerCase: { i18n: 'password.complexity.lowercase' },\n minUpperCase: { i18n: 'password.complexity.uppercase' },\n minNumber: { i18n: 'password.complexity.number' },\n minSymbol: { i18n: 'password.complexity.symbol' },\n excludeUsername: { i18n: 'password.complexity.no_username' },\n excludeFirstName: { i18n: 'password.complexity.no_first_name' },\n excludeLastName: { i18n: 'password.complexity.no_last_name' },\n },\n history: { i18n: 'password.complexity.history' },\n age: {\n minutes: { i18n: 'password.complexity.minAgeMinutes' },\n hours: { i18n: 'password.complexity.minAgeHours' },\n days: { i18n: 'password.complexity.minAgeDays' },\n },\n };\n const result = [];\n const passwordRequirements = getPasswordRequirements(policy, passwordRequirementI18nKeys, false);\n let requirements = passwordRequirements.complexity;\n\n // Generate and add complexity string to result\n if (requirements.length > 0) {\n requirements = _.reduce(requirements, function(result, requirement) {\n return result ? result + loc('password.complexity.list.element', 'login', [requirement]) : requirement;\n });\n\n result.push(loc('password.complexity.requirements', 'login', [requirements]));\n }\n\n // Only 1 value expected in history and age for now\n result.push(passwordRequirements.history[0]);\n result.push(passwordRequirements.age[0]);\n\n return _.compact(result).join(' ');\n};\n\nfn.getCardinalityText = function(enrolled, required, cardinality) {\n if (cardinality) {\n if (enrolled) {\n return cardinality.enrolled === 1 ? '' : loc('enroll.choices.cardinality.setup', 'login', [cardinality.enrolled]);\n } else if (required && cardinality.maximum > 1) {\n return loc('enroll.choices.cardinality.setup.remaining', 'login', [cardinality.enrolled, cardinality.minimum]);\n }\n }\n return '';\n};\n\nfn.findFactorInFactorsArray = function(factors, provider, factorType) {\n let factor = factors.findWhere({ provider: provider, factorType: factorType });\n\n if (factor === undefined) {\n //for factors that support cardinality and only have factorType\n factor = factors.findWhere({ factorType: factorType });\n }\n return factor;\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n//note: not including Okta here and explicitly including jquery and Handlebars\n//because we want to be explicit about which TextBox we are extending here\n//and want to avoid the cirucular dependency that occurs if we\n//include Okta\nimport { internal } from '@okta/courage';\nimport '@okta/qtip';\nimport BrowserFeatures from 'util/BrowserFeatures';\nconst { TextBox } = internal.views.forms.inputs;\nexport default TextBox.extend({\n postRender: function() {\n if (this.options.type === 'number') {\n const input = this.$('input');\n\n input.attr({\n pattern: '[0-9]*',\n inputmode: 'numeric',\n });\n }\n TextBox.prototype.postRender.apply(this, arguments);\n },\n // Override the focus() to ignore focus in IE. IE (8-11) has a known bug where\n // the placeholder text disappears when the input field is focused.\n focus: function() {\n if (BrowserFeatures.isIE()) {\n return;\n }\n return TextBox.prototype.focus.apply(this, arguments);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FactorUtil from 'util/FactorUtil';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport TextBox from 'v1/views/shared/TextBox';\nconst form = {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n subtitle: _.partial(loc, 'enroll.totp.enterCode', 'login'),\n autoSave: true,\n noButtonBar: true,\n attributes: { 'data-se': 'step-sendcode' },\n\n formChildren: function() {\n return [\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'mfa.challenge.enterCode.tooltip',\n 'mfa.challenge.enterCode.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'tel',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('oform.verify', 'login'), // TODO: deprecated by mfa.challenge.verify\n }),\n ];\n },\n};\nexport default form;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"mfa.backToFactors\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.options.appState.trigger('backToFactors');\n this.back();\n },\n },\n\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n if (this.options.appState.get('prevLink')) {\n // Once we are in the MFA_ENROLL_ACTIVATE, we need to reset to the\n // correct state. Fortunately, this means that the router will\n // handle navigation once the request is finished.\n this.model.doTransaction(function(transaction) {\n return transaction.prev();\n });\n } else {\n this.options.appState.trigger('navigate', 'signin/enroll');\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport FormController from 'v1/util/FormController';\nimport EnterPasscodeForm from 'v1/views/enroll-factors/EnterPasscodeForm';\nimport Footer from 'v1/views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'activate-totp',\n Model: function() {\n return {\n props: {\n factorId: ['string', true, this.options.appState.get('activatedFactorId')],\n passCode: ['string', true],\n },\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n\n Form: EnterPasscodeForm,\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View, _ } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport '@okta/qtip';\n\nexport default View.extend({\n className: 'scope-item',\n template: hbs`\n

          {{name}}

          \n {{#if description}}\n \n {{/if}}`,\n\n postRender: function() {\n this.$('.scope-item-tooltip').qtip({\n content: {\n text: _.escape(this.options.description)\n },\n style: { classes: 'okta-tooltip qtip-custom qtip-shadow' },\n position: {\n my: 'bottom left',\n target: 'mouse'\n }\n });\n }\n});\n\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint max-len: [2, 131] */\nimport hbs from '@okta/handlebars-inline-precompile';\nimport { _, View, loc } from '@okta/courage';\nimport ScopeItem from './ScopeItem';\n\nconst SCOPE_N_GROUP_CONFIG = {\n groups: 'user',\n myAccount: 'user',\n users: 'user',\n apps: 'resource',\n authenticators: 'resource',\n authorizationServers: 'resource',\n clients: 'resource',\n domains: 'resource',\n factors: 'resource',\n idps: 'resource',\n linkedObjects: 'resource',\n policies: 'resource',\n templates: 'resource',\n eventHooks: 'hook',\n inlineHooks: 'hook',\n events: 'system',\n logs: 'system',\n orgs: 'system',\n roles: 'system',\n schemas: 'system',\n sessions: 'system',\n trustedOrigins: 'system',\n};\n\nconst DEFAULT_GROUP = 'system';\n\nconst findScopeGroupKey = ({ name = '' }) => {\n const xs = name.split('.');\n const groupType = xs[1];\n\n return SCOPE_N_GROUP_CONFIG[groupType] || DEFAULT_GROUP;\n};\n\nconst ScopeGroupHeaderView = View.extend({\n className: 'scope-group',\n\n events: {\n 'click': 'expandScopes',\n },\n\n template: hbs`\n
          \n

          {{groupName}}

          \n \n \n \n \n \n \n
          `,\n\n expandScopes() {\n this.$el.toggleClass('scope-group--is-expanded');\n this.$('.caret').toggleClass('caret--is-rotated');\n },\n\n preRender() {\n _.chain(this.options.scopes)\n .sortBy(({ name }) => name)\n .each(({ name, displayName, description }) => {\n this.add(ScopeItem, {\n options: {\n name: displayName || name,\n description,\n },\n });\n });\n }\n});\n\nexport default View.extend({\n className: 'scope-list detail-row',\n\n postRender: function() {\n const allScopes = this.model.get('scopes');\n const scopesWithGroup = _.groupBy(allScopes, findScopeGroupKey);\n\n const SCOPE_GROUP_NAMES_CONFIG = {\n 'user': loc('admin.consent.group.user.group', 'login'),\n 'resource': loc('admin.consent.group.resource.policy', 'login'),\n 'hook': loc('admin.consent.group.hook', 'login'),\n 'system': loc('admin.consent.group.system', 'login'),\n };\n\n // loop through SCOPE_GROUP_NAMES_CONFIG to keep group order consistent in UI.\n _.each(SCOPE_GROUP_NAMES_CONFIG, (groupName, groupKey) => {\n const scopes = scopesWithGroup[groupKey];\n if (!Array.isArray(scopes)) {\n return;\n }\n // add scope group header and scopes\n this.add(ScopeGroupHeaderView, {\n options: {\n groupName,\n scopes,\n }\n });\n });\n },\n});\n","import hbs from '@okta/handlebars-inline-precompile';\n\nconst consentLogoHeaderTemplate = hbs`{{#if clientURI}}\n \n{{/if}}\n{{#if customLogo}}\n \n{{/if}}\n

          \n {{{i18n code=\"consent.required.text\" bundle=\"login\" arguments=\"appName\"}}}\n {{#if issuer}}\n
          {{issuer}}
          \n {{/if}}\n

          `;\n\nexport default consentLogoHeaderTemplate;\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport ScopeList from 'v1/views/admin-consent/ScopeList';\nimport consentLogoHeaderTemplate from 'v1/views/shared/templates/consentLogoHeaderTemplate';\n\nconst ConsentModel = {\n props: {\n scopes: ['array', true]\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.consent({\n consent: {\n scopes: _.pluck(this.get('scopes'), 'name')\n }\n });\n });\n },\n cancel: function() {\n var self = this;\n return this.doTransaction(function(transaction) {\n return transaction.cancel();\n }).then(function() {\n var consentCancelFn = self.settings.get('consent.cancel');\n if (_.isFunction(consentCancelFn)) {\n consentCancelFn();\n }\n });\n }\n};\n\nconst ConsentHeader = View.extend({\n className: 'consent-title detail-row',\n template: consentLogoHeaderTemplate,\n getTemplateData: function() {\n var appState = this.options.appState;\n return {\n appName: appState.escape('targetLabel'),\n customLogo: appState.get('targetLogo') && appState.get('targetLogo').href,\n defaultLogo: appState.get('defaultAppLogo'),\n clientURI: appState.get('targetClientURI') && appState.get('targetClientURI').href,\n issuer: appState.get('issuer'),\n };\n }\n});\n\nconst ConsentForm = {\n noCancelButton: false,\n buttonOrder: ['cancel', 'save'],\n autoSave: true,\n save: _.partial(loc, 'consent.required.consentButton', 'login'),\n cancel: _.partial(loc, 'consent.required.cancelButton', 'login'),\n formChildren: [\n FormType.View({\n View: ConsentHeader\n }),\n FormType.View({\n View: ScopeList,\n }),\n ],\n};\n\nconst AdminConsentRequiredController = FormController.extend({\n Model: ConsentModel,\n\n Form: ConsentForm,\n\n className: 'admin-consent-required',\n\n initialize: function() {\n this.model.set('scopes', this.options.appState.get('scopes'));\n this.listenTo(this.form, 'cancel', () => {\n this.model.cancel();\n });\n },\n});\n\nexport default AdminConsentRequiredController;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from '@okta/courage';\nimport Enums from './Enums';\nimport { ErrorXHR, ErrorContextData } from '../types/errors';\nimport { FlowIdentifier } from '@okta/okta-auth-js';\n\nabstract class CustomError extends Error {\n constructor(message?: string) {\n super(message);\n\n // 'Error' breaks prototype chain. Need to restore it for ES5.\n // https://github.com/microsoft/TypeScript/wiki/FAQ#why-doesnt-extending-built-ins-like-error-array-and-map-work\n // Note: no need to adjust prototype in subclasses of 'CustomError'.\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class ConfigError extends CustomError {\n name = Enums.CONFIG_ERROR;\n constructor(message?: string) {\n super(message || loc('error.config'));\n }\n}\n\nexport class UnsupportedBrowserError extends CustomError {\n name = Enums.UNSUPPORTED_BROWSER_ERROR;\n constructor(message?: string) {\n super(message || loc('error.unsupported.browser'));\n }\n}\n\nexport class OAuthError extends CustomError {\n name = Enums.OAUTH_ERROR;\n}\n\nexport class RegistrationError extends CustomError {\n name = Enums.REGISTRATION_FAILED;\n}\n\n// Thrown when initiation of poll was cancelled.\nexport class AuthStopPollInitiationError extends CustomError {\n name = Enums.AUTH_STOP_POLL_INITIATION_ERROR;\n}\n\nexport class U2FError extends CustomError {\n xhr: ErrorXHR;\n name = Enums.U2F_ERROR;\n constructor(err: ErrorContextData) {\n super(err.xhr?.responseJSON?.errorSummary);\n this.xhr = err.xhr;\n }\n}\n\nexport class WebAuthnError extends CustomError {\n xhr: ErrorXHR;\n name = Enums.WEB_AUTHN_ERROR;\n constructor(err: ErrorContextData) {\n super(err.xhr?.responseJSON?.errorSummary);\n this.xhr = err.xhr;\n }\n}\n\n// This is triggered only when code aborts webauthn browser prompt.\nexport class WebauthnAbortError extends CustomError {\n name = Enums.WEBAUTHN_ABORT_ERROR;\n}\n\nexport class ConfiguredFlowError extends CustomError {\n flowSetting: FlowIdentifier;\n name = Enums.CONFIGURED_FLOW_ERROR;\n constructor(message: string, flowSetting: FlowIdentifier) {\n super(message);\n this.flowSetting = flowSetting;\n }\n}\n","import { loc } from '@okta/courage';\n\nimport { AuthSdkError, OAuthError as SdkOAuthError} from '@okta/okta-auth-js';\nimport { OAuthError } from './Errors';\nimport { ErrorDetails } from '../types/errors';\n\ntype ErrorTraits = 'inline' | 'terminal';\n\ntype ErrorType = {\n [key in ErrorTraits]?: boolean;\n};\n\nclass InlineErrorType implements ErrorType {\n inline = true;\n}\n\nclass TerminalErrorType implements ErrorType {\n terminal = true;\n}\n\nclass TypedOAuthError extends OAuthError {\n errorType: T;\n orginalError: AuthSdkError | SdkOAuthError;\n errorDetails: ErrorDetails\n\n constructor(originalError: AuthSdkError | SdkOAuthError, errorTypeCtor: new () => T) {\n super(originalError.message);\n this.errorType = new errorTypeCtor();\n this.orginalError = originalError;\n\n this.errorDetails = {\n errorSummary: this.getErrorSummary(),\n errorCode: originalError.errorCode,\n errorCauses: 'errorCauses' in originalError ? originalError.errorCauses : undefined,\n }\n }\n\n protected getErrorSummary() {\n return this.orginalError.errorSummary;\n }\n\n public is(errorTrait: ErrorTraits) {\n return Boolean(Object.getOwnPropertyDescriptor(this.errorType, errorTrait as PropertyKey)?.value);\n }\n}\n\nclass RecoverableError extends TypedOAuthError {\n\n}\n\nclass NonRecoverableError extends TypedOAuthError {\n\n}\n\nclass ClockDriftError extends RecoverableError {\n constructor(error: AuthSdkError | SdkOAuthError) {\n super(error, TerminalErrorType);\n }\n\n getErrorSummary(): string {\n return loc('error.unsynced.clock', 'login');\n }\n}\n\nclass UserNotAssignedError extends RecoverableError {\n constructor(error: AuthSdkError | SdkOAuthError) {\n super(error, InlineErrorType);\n }\n}\n\nclass JITProfileProvisioningError extends RecoverableError {\n constructor(error: AuthSdkError | SdkOAuthError) {\n super(error, InlineErrorType);\n }\n getErrorSummary(): string {\n return loc('error.jit_failure', 'login');\n }\n}\n\nclass MfaRequiredError extends NonRecoverableError {\n constructor(error: AuthSdkError | SdkOAuthError) {\n super(error, InlineErrorType);\n }\n\n getErrorSummary(): string {\n return loc('error.mfa.required', 'login');\n }\n}\n\nfunction getTypedOAuthError(error: AuthSdkError | SdkOAuthError) {\n switch(error.errorCode) {\n case 'access_denied':\n return new UserNotAssignedError(error);\n\n case 'jit_failure_missing_fields':\n case 'jit_failure_invalid_login_format':\n case 'jit_failure_values_not_match_pattern':\n case 'jit_failure_values_too_long':\n case 'jit_failure_invalid_locale':\n return new JITProfileProvisioningError(error);\n\n case 'login_required':\n const mfaRequiredMsg = 'The client specified not to prompt, but the client app requires re-authentication or MFA.';\n if (error.message === mfaRequiredMsg) {\n return new MfaRequiredError(error);\n }\n\n case 'INTERNAL':\n const clockDriftMsg = 'The JWT was issued in the future';\n if (error.message === clockDriftMsg) {\n return new ClockDriftError(error);\n }\n\n default:\n return new RecoverableError(error, Object);\n }\n}\n\nexport {\n RecoverableError,\n NonRecoverableError,\n JITProfileProvisioningError,\n ClockDriftError,\n UserNotAssignedError,\n MfaRequiredError,\n TypedOAuthError,\n getTypedOAuthError\n}\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport Enums from './Enums';\nimport { getTypedOAuthError, NonRecoverableError } from './OAuthErrors';\nimport Util from './Util';\nconst util = {};\n\n// https://github.com/okta/okta-auth-js#authorize-options\nconst AUTH_PARAMS = [\n 'responseType',\n 'scopes',\n 'state',\n 'nonce',\n 'idp',\n 'idpScope',\n 'display',\n 'prompt',\n 'maxAge',\n 'loginHint'\n];\nutil.AUTH_PARAMS = AUTH_PARAMS;\n\n/**\n * Get the tokens in the OIDC/OAUTH flows\n *\n * @param settings - settings model object\n * @param params - {idp: 'xxx'} for social auth\n * {sessionToken: 'xxx'} for okta idp\n */\nutil.getTokens = function(settings, params, controller) {\n function success(result) {\n settings.callGlobalSuccess(Enums.SUCCESS, result);\n }\n\n function error(error) {\n const typedError = getTypedOAuthError(error);\n if (typedError.is('terminal')) {\n controller.model.appState.set('flashError', typedError);\n controller.model.appState.trigger('navigate', 'signin/error');\n } else if (typedError.is('inline')) {\n controller.model.trigger('error', controller.model, {\n responseJSON: {\n errorSummary: typedError.errorDetails.errorSummary\n }\n });\n controller.model.appState.trigger('removeLoading');\n }\n\n if (!typedError.is('terminal')) {\n Util.triggerAfterError(controller, typedError, settings);\n }\n\n if (typedError instanceof NonRecoverableError) {\n settings.callGlobalError(typedError);\n }\n }\n\n const authClient = settings.getAuthClient();\n const isAuthorizationCodeFlow = authClient.isAuthorizationCodeFlow() && !authClient.isPKCE();\n const options = settings.toJSON({ verbose: true });\n const getTokenOptions = {};\n\n _.extend(\n getTokenOptions,\n _.pick(options, 'clientId', 'redirectUri'),\n _.pick(options.authParams, AUTH_PARAMS),\n params\n );\n\n // Extra Options for Social Idp popup window title and id_token response timeout\n getTokenOptions.popupTitle = loc('socialauth.popup.title', 'login');\n getTokenOptions.timeout = options.oAuthTimeout;\n\n // Redirect flow - this can be used when logging into an external IDP, or\n // converting the Okta sessionToken to an access_token, id_token, and/or\n // authorization code. Note: The authorization code flow will always redirect.\n if (options.redirect === 'always' || isAuthorizationCodeFlow) {\n authClient.token.getWithRedirect(getTokenOptions).catch(error);\n } else if (getTokenOptions.sessionToken) {\n // Default flow if logging in with Okta as the IDP - convert sessionToken to\n // tokens in a hidden iframe. Used in Single Page Apps where the app does\n // not want to redirect away from the page to convert the token.\n authClient.token.getWithoutPrompt(getTokenOptions).then(success).catch(error);\n } else {\n // Default flow if logging in with an external IDP - opens a popup and\n // gets the token from a postMessage response.\n authClient.token.getWithPopup(getTokenOptions).then(success).catch(error);\n }\n};\n\nexport default util;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 47], max-statements: [2, 63] */\n\nimport { _, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport Enums from 'util/Enums';\nimport ErrorCodes from 'util/ErrorCodes';\nimport { ConfigError, UnsupportedBrowserError } from 'util/Errors';\nimport OAuth2Util from 'util/OAuth2Util';\nimport Util from 'util/Util';\nconst fn = {};\nconst verifyUrlTpl = hbs('signin/verify/{{provider}}/{{factorType}}');\nconst verifyUrlMultipleTpl = hbs('signin/verify/{{provider}}/{{factorType}}/{{factorIndex}}');\nconst verifyUrlNoProviderTpl = hbs('signin/verify/{{factorType}}');\nconst enrollFactorUrlTpl = hbs('signin/enroll/{{provider}}/{{factorType}}');\nconst activateFactorUrlTpl = hbs('signin/enroll-activate/{{provider}}/{{factorType}}{{#if step}}/{{step}}{{/if}}');\nconst recoveryUrlTpl = hbs('signin/recovery/{{recoveryToken}}');\nconst refreshUrlTpl = hbs('signin/refresh-auth-state{{#if token}}/{{token}}{{/if}}');\nconst signinWithUsernameUrlTpl = hbs('signin/okta/{{username}}');\nconst sessionCookieRedirectTpl = hbs(\n // eslint-disable-next-line max-len\n '{{baseUrl}}/login/sessionCookieRedirect?checkAccountSetupComplete=true&token={{{token}}}&redirectUrl={{{redirectUrl}}}'\n);\nconst deviceActivationStatuses = ['DEVICE_ACTIVATED', 'DEVICE_NOT_ACTIVATED_CONSENT_DENIED', 'DEVICE_NOT_ACTIVATED'];\n\nfn.isHostBackgroundChromeTab = function() {\n // Checks if the SIW is loaded in a chrome webview and\n // it is in an app that is in background.\n if (navigator.userAgent.match(/Android/) && navigator.userAgent.match(/Chrome/) && document.hidden) {\n return true;\n } else {\n return false;\n }\n};\n\nfn.isDocumentVisible = function() {\n return document.visibilityState === 'visible';\n};\n\nfn.createVerifyUrl = function(provider, factorType, factorIndex) {\n if (provider && factorIndex) {\n return verifyUrlMultipleTpl({\n provider: encodeURIComponent(provider.toLowerCase()),\n factorType: encodeURIComponent(factorType),\n factorIndex: encodeURIComponent(factorIndex),\n });\n } else if (provider) {\n return verifyUrlTpl({\n provider: encodeURIComponent(provider.toLowerCase()),\n factorType: encodeURIComponent(factorType),\n });\n } else {\n return verifyUrlNoProviderTpl({\n factorType: encodeURIComponent(factorType),\n });\n }\n};\n\nfn.createEnrollFactorUrl = function(provider, factorType) {\n return enrollFactorUrlTpl({\n provider: encodeURIComponent(provider.toLowerCase()),\n factorType: encodeURIComponent(factorType),\n });\n};\n\nfn.createActivateFactorUrl = function(provider, factorType, step) {\n return activateFactorUrlTpl({\n provider: encodeURIComponent(provider.toLowerCase()),\n factorType: encodeURIComponent(factorType),\n step: step ? encodeURIComponent(step) : false,\n });\n};\n\nfn.createRecoveryUrl = function(recoveryToken) {\n return recoveryUrlTpl({\n recoveryToken: encodeURIComponent(recoveryToken),\n });\n};\n\nfn.createRefreshUrl = function(stateToken) {\n const token = stateToken ? encodeURIComponent(stateToken) : null;\n\n return refreshUrlTpl({ token: token });\n};\n\nfn.createSigninUrl = function(username) {\n return username ? signinWithUsernameUrlTpl({ username: encodeURIComponent(username) }) : 'signin';\n};\n\nfn.routeAfterAuthStatusChangeError = function(router, err) {\n if (!err) {\n return;\n }\n\n // Global error handling for CORS enabled errors\n if (err.xhr && BrowserFeatures.corsIsNotEnabled(err.xhr)) {\n router.settings.callGlobalError(new UnsupportedBrowserError(loc('error.enabled.cors')));\n return;\n }\n\n // Token has expired - no longer valid. Navigate back to primary auth.\n if (err.errorCode === ErrorCodes.INVALID_TOKEN_EXCEPTION) {\n router.appState.set('flashError', err);\n router.controller.state.set('navigateDir', Enums.DIRECTION_BACK);\n if (router.settings.get('features.mfaOnlyFlow')) {\n router.navigate('signin/error', { trigger: true });\n } else {\n router.navigate('', { trigger: true });\n }\n return;\n }\n\n Util.triggerAfterError(router.controller, err);\n};\n\nfn.routeAfterAuthStatusChange = function(router, res) {\n // Other errors are handled by the function making the authClient request\n if (!res || !res.status) {\n router.appState.clearLastAuthResponse();\n return;\n }\n\n router.appState.setAuthResponse(res);\n\n if (router.controller && router.controller.trapAuthResponse(res)) {\n return;\n }\n\n fn.handleResponseStatus(router, res);\n};\n\nfn.handleResponseStatus = function(router, res) {\n switch (res.status) {\n case 'SUCCESS': {\n handleSuccessResponseStatus(router, res);\n return;\n }\n case 'ADMIN_CONSENT_REQUIRED':\n router.navigate('signin/admin-consent', { trigger: true });\n return;\n case 'CONSENT_REQUIRED':\n router.navigate('signin/consent', { trigger: true });\n return;\n case 'DEVICE_ACTIVATE':\n router.navigate('signin/device-activate', { trigger: true });\n return;\n // We want the same view for FACTOR_REQUIRED & FACTOR_CHALLENGE\n // In the new idx pipeline FACTOR_CHALLENGE API response does not contain a prev link\n case 'FACTOR_REQUIRED':\n case 'FACTOR_CHALLENGE':\n case 'MFA_REQUIRED': {\n const lastFailedChallengeFactorData = router.appState.get('lastFailedChallengeFactorData');\n // When the widget is bootstrapped with an error in MFA_CHALLENGE state, we pass the\n // lastFailedChallengeFactorData to MFA_REQUIRED, in order to show the error message\n // on the correct factor view\n\n if (lastFailedChallengeFactorData && lastFailedChallengeFactorData.factor) {\n router.appState.get('factors').lastUsedFactor = lastFailedChallengeFactorData.factor;\n }\n const factor = router.appState.get('factors').getDefaultFactor();\n const url = fn.createVerifyUrl(factor.get('provider'), factor.get('factorType'));\n\n router.navigate(url, { trigger: true });\n router.appState.clearLastFailedChallengeFactorData();\n return;\n }\n case 'POLL': {\n const pollUrl = 'signin/poll';\n\n router.navigate(pollUrl, { trigger: true });\n return;\n }\n case 'MFA_CHALLENGE':\n // Since we normally trap MFA_CHALLENGE, this will only get called on a\n // page refresh or when an error is returned on verification with an IdP.\n // We need to return to MFA_REQUIRED to initialize the\n // page correctly (i.e. factors dropdown, etc)\n if (router.appState.get('isFactorResultFailed')) {\n router.appState.setLastFailedChallengeFactorData();\n }\n router.appState.get('transaction').prev().then(function(trans) {\n router.appState.set('transaction', trans);\n });\n // TODO: catch/handle error here?\n return;\n case 'MFA_ENROLL':\n case 'FACTOR_ENROLL':\n router.navigate('signin/enroll', { trigger: true });\n return;\n case 'MFA_ENROLL_ACTIVATE':\n case 'FACTOR_ENROLL_ACTIVATE': {\n const activateUrl = fn.createActivateFactorUrl(\n router.appState.get('activatedFactorProvider'),\n router.appState.get('activatedFactorType')\n );\n\n router.navigate(activateUrl, { trigger: true });\n return;\n }\n case 'PASSWORD_WARN':\n case 'PASSWORD_EXPIRED':\n if (router.settings.get('features.customExpiredPassword') && !router.appState.get('isPwdManagedByOkta')) {\n router.navigate('signin/custom-password-expired', { trigger: true });\n } else {\n router.navigate('signin/password-expired', { trigger: true });\n }\n return;\n case 'RECOVERY_CHALLENGE': {\n const fromEmail = res.factorType.toLowerCase() === Enums.RECOVERY_FACTOR_TYPE_EMAIL.toLowerCase();\n const isForgotPassword = res.recoveryType === Enums.RECOVERY_TYPE_PASSWORD;\n const isUnlock = res.recoveryType === Enums.RECOVERY_TYPE_UNLOCK;\n // Will use this workaround (lowercasing response) until OKTA-69083 is resolved\n\n if (isForgotPassword && fromEmail) {\n router.navigate('signin/recovery-emailed', { trigger: true });\n } else if (isUnlock && fromEmail) {\n router.navigate('signin/unlock-emailed', { trigger: true });\n } else {\n router.navigate('signin/recovery-challenge', { trigger: true });\n }\n return;\n }\n case 'RECOVERY':\n router.navigate('signin/recovery-question', { trigger: true });\n return;\n case 'PASSWORD_RESET':\n router.navigate('signin/password-reset', { trigger: true });\n return;\n case 'LOCKED_OUT': {\n if (router.settings.get('features.selfServiceUnlock')) {\n router.navigate('signin/unlock', { trigger: true });\n } else {\n const errorMessage = loc('error.auth.lockedOut', 'login');\n const resError = {\n responseJSON: {\n errorCauses: [],\n errorSummary: errorMessage,\n errorCode: 'E0000119',\n },\n };\n const err = {\n name: 'AuthApiError',\n message: errorMessage,\n xhr: resError\n };\n router.controller.model.appState.trigger('removeLoading');\n router.controller.model.trigger('error', router.controller.model, resError);\n Util.triggerAfterError(router.controller, err);\n }\n return;\n }\n case 'PROFILE_REQUIRED':\n router.navigate('signin/enroll-user', { trigger: true });\n return;\n case 'UNAUTHENTICATED':\n // Either we have factors and we are in passwordlessAuth mode\n if (router.appState.get('promptForFactorInUnauthenticated')) {\n const defaultFactor = router.appState.get('factors').getDefaultFactor();\n const factorURL = fn.createVerifyUrl(defaultFactor.get('provider'), defaultFactor.get('factorType'));\n\n router.navigate(factorURL, { trigger: true });\n return;\n }\n // Or we're in device flow and we need to force idp discovery check\n if (router.appState.get('usingDeviceFlow')) {\n router.navigate('signin/idp-discovery-check', { trigger: true });\n return;\n }\n // Or we don't have anything and we need to show the login page\n router.navigate('', { trigger: true });\n return;\n default:\n throw new Error('Unknown status: ' + res.status);\n }\n};\n\nfunction handleSuccessResponseStatus(router, res) {\n if (res.recoveryType === Enums.RECOVERY_TYPE_UNLOCK) {\n router.navigate('signin/account-unlocked', { trigger: true });\n return;\n }\n\n if (_.contains(deviceActivationStatuses, res._embedded?.deviceActivationStatus)) {\n router.navigate('signin/device-activate-complete', { trigger: true });\n return;\n }\n\n // If the desired end result object needs to have idToken (and not sessionToken),\n // get the id token from session token before calling the global success function.\n if (router.settings.get('oauth2Enabled')) {\n OAuth2Util.getTokens(router.settings, { sessionToken: res.sessionToken }, router.controller);\n return;\n }\n\n const successData = {\n user: res._embedded.user,\n type: res.type || Enums.SESSION_SSO,\n };\n\n if (res.relayState) {\n successData.relayState = res.relayState;\n }\n\n const redirectFn = router.settings.get('redirectUtilFn');\n const nextUrl = res?._links?.original?.href || res?._links?.next?.href;\n\n if (res.type === Enums.SESSION_STEP_UP) {\n const targetUrl = res?._links?.next?.href;\n\n successData.stepUp = {\n url: targetUrl,\n finish: function() {\n redirectFn(targetUrl);\n },\n };\n } else {\n if (nextUrl) {\n successData.next = function() {\n redirectFn(nextUrl);\n };\n } else {\n // Add the type for now until the API returns it.\n successData.type = Enums.SESSION_SSO;\n }\n\n if (res.sessionToken) {\n successData.session = {\n token: res.sessionToken,\n setCookieAndRedirect: function(redirectUri) {\n if (redirectUri) {\n Util.debugMessage(`\n Passing a \"redirectUri\" to \"setCookieAndRedirect\" is strongly discouraged.\n It is recommended to set a \"redirectUri\" option in the config object passed to the widget constructor.\n `);\n }\n\n redirectUri = redirectUri || router.settings.get('redirectUri');\n if (!redirectUri) {\n throw new ConfigError('\"redirectUri\" is required');\n }\n\n redirectFn(\n sessionCookieRedirectTpl({\n baseUrl: router.settings.get('baseUrl'),\n token: encodeURIComponent(res.sessionToken),\n redirectUrl: encodeURIComponent(redirectUri),\n })\n );\n },\n };\n }\n }\n\n // Check if we need to wait for redirect based on host.\n if (fn.isHostBackgroundChromeTab()) {\n document.addEventListener('visibilitychange', function checkVisibilityAndCallSuccess() {\n if (fn.isDocumentVisible()) {\n document.removeEventListener('visibilitychange', checkVisibilityAndCallSuccess);\n router.settings.callGlobalSuccess(Enums.SUCCESS, successData);\n }\n });\n } else {\n router.settings.callGlobalSuccess(Enums.SUCCESS, successData);\n }\n}\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default {\n INVALID_TOKEN_EXCEPTION: 'E0000011',\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport RouterUtil from 'v1/util/RouterUtil';\nexport default View.extend({\n className: 'scan-instructions clearfix',\n template: hbs`\n
          \n
          \n

          {{instructions}}

          \n
          \n
          \n \n `,\n\n events: {\n 'click [data-type=\"manual-setup\"]': function(e) {\n e.preventDefault();\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'manual'\n );\n if (this.model.get('__factorType__') === 'push') {\n // cancel the poll and navigate to manual setup.\n this.model\n .doTransaction(function(transaction) {\n return transaction.prev().then(function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: 'push',\n provider: 'OKTA',\n });\n\n return factor.enroll();\n });\n })\n .then(() => {\n this.options.appState.trigger('navigate', url);\n });\n } else {\n this.options.appState.trigger('navigate', url);\n }\n },\n 'click [data-type=\"refresh-qrcode\"]': function(e) {\n e.preventDefault();\n this.model.trigger('errors:clear');\n\n const self = this;\n\n this.model\n .doTransaction(function(transaction) {\n if (this.appState.get('isWaitingForActivation')) {\n return transaction.poll();\n } else {\n return transaction.activate();\n }\n })\n .then(function(trans) {\n const res = trans.data;\n\n if (\n (res.status === 'MFA_ENROLL_ACTIVATE' || res.status === 'FACTOR_ENROLL_ACTIVATE') &&\n res.factorResult === 'WAITING'\n ) {\n // defer the render here to have a lastResponse set in AppState\n // so that we get new QRcode rendered\n _.defer(_.bind(self.render, self));\n }\n });\n },\n },\n\n initialize: function() {\n this.listenTo(this.options.appState, 'change:lastAuthResponse', function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.$el.toggleClass('qrcode-expired', !this.options.appState.get('isWaitingForActivation'));\n } else if (this.options.appState.get('isSuccessResponse')) {\n this.$el.addClass('qrcode-success');\n }\n });\n this.listenTo(this.model, 'error', function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.$el.toggleClass('qrcode-expired', true);\n }\n });\n },\n\n getTemplateData: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n let instructions;\n\n if (this.model.get('__provider__') === 'GOOGLE') {\n instructions = loc('enroll.totp.setupGoogleAuthApp', 'login', [factorName]);\n } else {\n instructions = loc('enroll.totp.setupApp', 'login', [factorName]);\n }\n return {\n instructions: instructions,\n qrcode: this.options.appState.get('qrcode'),\n altQRCode: loc('mfa.altQrCode', 'login')\n };\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from '@okta/courage';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport BarcodeView from 'v1/views/enroll-factors/BarcodeView';\nimport Footer from 'v1/views/enroll-factors/Footer';\nconst PUSH_INTERVAL = 6000;\n\n// Note: Keep-alive is set to 5 seconds - using 5 seconds here will result\n// in network connection lost errors in Safari and IE.\n\nexport default FormController.extend({\n className: 'barcode-push',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'step-scan' },\n className: 'barcode-scan',\n initialize: function() {\n this.listenTo(this.model, 'error errors:clear', function() {\n this.clearErrors();\n });\n },\n\n formChildren: [FormType.View({ View: BarcodeView })],\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.pollForEnrollment().catch(()=>{\n // Ignoring the errors for now. \n // clean up will be done based on OKTA-324849\n });\n },\n\n pollForEnrollment: function() {\n return this.model.doTransaction(function(transaction) {\n return transaction.poll(PUSH_INTERVAL);\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport BarcodeView from 'v1/views/enroll-factors/BarcodeView';\nimport Footer from 'v1/views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'barcode-totp',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n save: _.partial(loc, 'oform.next', 'login'),\n noCancelButton: true,\n attributes: { 'data-se': 'step-scan' },\n className: 'barcode-scan',\n\n formChildren: [FormType.View({ View: BarcodeView })],\n },\n\n Footer: Footer,\n\n initialize: function() {\n this.listenTo(this.form, 'save', function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.model.get('__provider__'),\n this.model.get('__factorType__'),\n 'activate'\n );\n\n this.options.appState.trigger('navigate', url);\n });\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View, _ } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport '@okta/qtip';\nexport default View.extend({\n className: 'scope-item',\n template: hbs(\n '\\\n
          \\\n

          {{name}}

          \\\n
          \\\n {{#if description}}\\\n \\\n {{/if}}\\\n '\n ),\n getTemplateData() {\n const { name, description, isCustomized } = this.options;\n const baseClass = 'scope-item-text';\n const classNames = (name === 'openid' || isCustomized)\n ? `${baseClass} no-translate`: baseClass;\n return { classNames, name, description };\n },\n\n postRender: function() {\n this.$('.scope-item-tooltip').qtip({\n content: {\n text: _.escape(this.options.description),\n },\n style: { classes: 'okta-tooltip qtip-custom qtip-shadow' },\n position: {\n my: 'bottom right',\n target: 'mouse',\n },\n });\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport ScopeItem from './ScopeItem';\nexport default View.extend({\n className: 'scope-list detail-row',\n\n postRender: function() {\n this.model.get('scopes').forEach(scope => {\n this.add(ScopeItem, {\n options: {\n name: scope.displayName || scope.name,\n description: scope.description,\n isCustomized: scope.isCustomized,\n },\n });\n });\n },\n});\n","import { _, internal } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\n\nconst CheckBox = internal.views.forms.inputs.CheckBox;\n\nexport default CheckBox.extend({\n template: hbs`\n \n \n `,\n\n /**\n * @Override\n */\n enable: function() {\n if (this.options.options.optional) {\n this.$(':input').prop('disabled', false);\n }\n },\n\n /**\n * @Override\n */\n editMode: function() {\n\n this.$el.html(this.template(_.extend(_.omit(this.options, 'placeholder'), {\n placeholder: this.options.placeholder || this.options.name,\n desc: this.options.options.description\n })));\n\n this.$(':checkbox').prop('checked', this.getModelValue() || false);\n\n this.$('input').customInput();\n this.model.trigger('form:resize');\n\n if (!this.options.options.optional) {\n const input = this.$('input').get(0);\n this.$(input.parentElement).addClass('o-form-read-mode');\n this.$(':checkbox').prop('disabled', true);\n }\n\n if (this.options.name === 'openid' || this.options.options.isCustomized) {\n this.$('label > b').addClass('no-translate');\n if (this.options.options.isCustomized) {\n this.$('label > p').addClass('no-translate');\n }\n }\n\n return this;\n },\n\n});","import { loc, View } from '@okta/courage';\nimport Enums from 'util/Enums';\n\nexport default View.extend({\n tagName: 'a',\n className: 'skip-to-content-link',\n attributes: { href: `#${Enums.WIDGET_CONTAINER_ID}` },\n initialize: function initialize() {\n this.$el.append(loc('skip.to.main.content', 'login'));\n }\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 160] */\nimport { _, $, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport ScopeList from 'v1/views/consent/ScopeList';\nimport ScopeCheckBox from 'v1/views/consent/ScopeCheckBox';\nimport SkipLink from 'v1/views/shared/SkipLink';\nimport consentLogoHeaderTemplate from 'v1/views/shared/templates/consentLogoHeaderTemplate';\n\nconst granularConsentHeaderTemplate = hbs`\n {{#if clientURI}}\n \n {{/if}}\n {{#if customLogo}}\n \n {{else}}\n \n {{/if}}\n {{#if clientURI}}\n \n {{/if}}\n

          \n \n {{i18n \n code=\"granular.consent.scopes.title\" bundle=\"login\" \n arguments=\"appName\"\n $1=\"$1\"\n $2=\"

          $2

          \"\n }}\n
          \n {{#if issuer}}\n
          {{issuer}}
          \n {{/if}}\n

          `;\n\nconst getConsentHeader = (template) => FormType.View({\n View: View.extend({\n className: 'consent-title detail-row',\n template,\n getTemplateData: function() {\n const appState = this.options.appState;\n return {\n appName: appState.escape('targetLabel'),\n customLogo: appState.get('targetLogo') && appState.get('targetLogo').href,\n defaultLogo: appState.get('defaultAppLogo'),\n clientURI: appState.get('targetClientURI') && appState.get('targetClientURI').href,\n };\n },\n }),\n});\n\nconst consentRequiredDescription = FormType.View({\n View: View.extend({\n className: 'consent-description detail-row',\n template: hbs`

          {{i18n code=\"consent.required.description\" bundle=\"login\"}}

          `,\n }),\n});\n\nconst granularConsentDescription = FormType.View({\n View: View.extend({\n className: 'consent-description',\n template: hbs`

          {{i18n code=\"granular.consent.scopes.description\" bundle=\"login\"}}

          `,\n }),\n});\n\nconst getScopeCheckBoxes = (scopes) => {\n const sortedScopes = scopes.slice().sort((scope1, scope2) => scope2.optional - scope1.optional);\n return _.map(sortedScopes, ({name, displayName, description, optional, isCustomized}) => FormType.Input({\n name: name,\n input: ScopeCheckBox,\n placeholder: displayName,\n label: false,\n modelType: 'boolean',\n required: true,\n options:\n {\n description,\n optional,\n isCustomized\n }\n }));\n};\n\nconst isGranularConsent = (appState) => {\n return 'optional' in appState.get('scopes')[0];\n};\n\nexport default FormController.extend({\n className: 'consent-required',\n initialize: function() {\n this.model.set('expiresAt', this.options.appState.get('expiresAt'));\n this.model.set('scopes', this.options.appState.get('scopes'));\n this.listenTo(this.form, 'cancel', _.bind(this.model.cancel, this.model));\n\n // add Skip to main content link\n const skipLink = new SkipLink();\n $(`#${Enums.WIDGET_LOGIN_CONTAINER_ID}`).prepend(skipLink.render().$el);\n\n if (isGranularConsent(this.options.appState)) {\n this.$el.addClass('granular-consent').removeClass('consent-required');\n this.form.cancel = _.partial(loc, 'oform.cancel', 'login');\n _.forEach(this.options.appState.get('scopes'), scope => {\n this.model.set(scope.name, true);\n });\n }\n },\n postRender: function() {\n FormController.prototype.postRender.apply(this, arguments);\n\n // Update the \"don't allow\" and \"allow access\" buttons to be neutral by changing \"allow button\" to be gray.\n this.$('.o-form-button-bar .button-primary').removeClass('button-primary');\n },\n Model: {\n props: {\n expiresAt: ['string', true],\n scopes: ['array', true],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n let scopeNames = _.pluck(this.get('scopes'), 'name');\n let consent = { expiresAt: this.get('expiresAt') };\n if (isGranularConsent(this)) {\n consent['optedScopes'] = _.reduce(scopeNames, (optedScopes, scope) => { optedScopes[scope] = this.get(scope); return optedScopes; }, {});\n } else {\n consent['scopes'] = scopeNames;\n }\n return transaction.consent({ consent });\n });\n },\n cancel: function() {\n const self = this;\n\n return this.doTransaction(function(transaction) {\n return transaction.cancel();\n }).then(function() {\n const consentCancelFn = self.settings.get('consent.cancel');\n\n if (_.isFunction(consentCancelFn)) {\n consentCancelFn();\n }\n });\n },\n },\n Form: {\n noCancelButton: false,\n buttonOrder: ['cancel', 'save'],\n autoSave: true,\n save: _.partial(loc, 'consent.required.consentButton', 'login'),\n cancel: _.partial(loc, 'consent.required.cancelButton', 'login'),\n formChildren: function() {\n if (isGranularConsent(this.options.appState)) {\n return [\n getConsentHeader(granularConsentHeaderTemplate),\n granularConsentDescription,\n ].concat(getScopeCheckBoxes(this.options.appState.get('scopes')));\n } else {\n return [\n getConsentHeader(consentLogoHeaderTemplate),\n FormType.View({\n View: new ScopeList({ model: this.model }),\n }),\n consentRequiredDescription\n ];\n }\n },\n },\n Footer: View.extend({\n className: 'consent-footer',\n template: hbs(\n '\\\n {{#if termsOfService}}\\\n {{i18n code=\"consent.required.termsOfService\" bundle=\"login\"}}\\\n {{#if privacyPolicy}}\\\n •\\\n {{/if}}\\\n {{/if}}\\\n {{#if privacyPolicy}}\\\n {{i18n code=\"consent.required.privacyPolicy\" bundle=\"login\"}}\\\n {{/if}}\\\n '\n ),\n getTemplateData: function() {\n const appState = this.options.appState;\n\n return {\n termsOfService: appState.get('targetTermsOfService') && appState.get('targetTermsOfService').href,\n privacyPolicy: appState.get('targetPrivacyPolicy') && appState.get('targetPrivacyPolicy').href,\n };\n },\n }),\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View, internal } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nconst { Util } = internal.util;\nexport default View.extend({\n template: hbs(\n '\\\n {{#if passwordWarn}}\\\n \\\n {{i18n code=\"password.expiring.later\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n \\\n {{i18n code=\"signout\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer clearfix',\n events: {\n 'click .js-signout': function(e) {\n e.preventDefault();\n const self = this;\n const authClient = self.settings.getAuthClient();\n\n this.model\n .doTransaction(function(transaction) {\n return transaction.cancel();\n })\n .then(function() {\n return authClient.session.exists();\n })\n .then(function(sessionExists) {\n if (sessionExists) {\n return authClient.closeSession().catch(() => {});\n }\n })\n .then(function() {\n if (self.settings.get('backToSignInUri')) {\n Util.redirect(self.settings.get('backToSignInUri'));\n } else {\n self.state.set('navigateDir', Enums.DIRECTION_BACK);\n self.options.appState.trigger('navigate', '');\n }\n });\n },\n 'click .js-skip': function(e) {\n e.preventDefault();\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n },\n },\n getTemplateData: function() {\n return { passwordWarn: this.options.appState.get('isPwdExpiringSoon') };\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, internal } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/expired-password/Footer';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'custom-password-expired',\n Model: {},\n Form: {\n noButtonBar: true,\n title: function() {\n const expiringSoon = this.options.appState.get('isPwdExpiringSoon');\n const numDays = this.options.appState.get('passwordExpireDays');\n\n if (expiringSoon && numDays > 0) {\n return loc('password.expiring.title', 'login', [numDays]);\n } else if (expiringSoon && numDays === 0) {\n return loc('password.expiring.today', 'login');\n } else if (expiringSoon) {\n return loc('password.expiring.soon', 'login');\n } else {\n return this.settings.get('brandName')\n ? loc('password.expired.title.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expired.title.generic', 'login');\n }\n },\n subtitle: function() {\n if (this.options.appState.get('isPwdExpiringSoon')) {\n return this.settings.get('brandName')\n ? loc('password.expiring.soon.subtitle.specific', 'login', [this.settings.get('brandName')])\n : loc('password.expiring.soon.subtitle.generic', 'login');\n }\n\n return loc('password.expired.custom.subtitle', 'login');\n },\n formChildren: function() {\n return [\n FormType.Button({\n title: _.partial(loc, 'password.expired.custom.submit', 'login', [\n this.options.appState.get('passwordExpiredWebsiteName'),\n ]),\n className: 'button button-primary button-wide',\n attributes: { 'data-se': 'custom-button' },\n click: function() {\n Util.redirect(this.options.appState.get('passwordExpiredLinkUrl'));\n },\n }),\n ];\n },\n },\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 160] */\nimport hbs from '@okta/handlebars-inline-precompile';\nimport {loc, View} from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport TextBox from 'v1/views/shared/TextBox';\n\nconst InvalidUserCodeErrorView = View.extend({\n template: hbs`\n
          \n \n

          {{i18n code=\"api.authn.error.PASSCODE_INVALID\" bundle=\"login\"}}

          \n
          \n `\n});\n\nexport default FormController.extend({\n className: 'device-code-activate',\n Model: function() {\n return {\n props: {\n userCode: ['string', true, this.options?.appState?.get('userCode')],\n stateToken: 'string',\n },\n save: function() {\n const self = this;\n return this.doTransaction(function(transaction) {\n return transaction.deviceActivate({\n userCode: self.get('userCode')\n });\n });\n }\n };\n },\n Form: {\n noCancelButton: true,\n autoSave: true,\n save: function() {\n return loc('oform.next', 'login');\n },\n title: function() {\n return loc('device.code.activate.title', 'login');\n },\n subtitle() {\n return loc('device.code.activate.subtitle', 'login');\n },\n formChildren: function() {\n if (this.options.appState.get('deviceActivationStatus') === 'INVALID_USER_CODE') {\n this.add(InvalidUserCodeErrorView, '.o-form-error-container');\n }\n\n return [\n FormType.Input({\n label: loc('device.code.activate.label', 'login'),\n 'label-top': true,\n name: 'userCode',\n input: TextBox,\n inputId: 'user-code',\n type: 'text',\n inlineValidation: false,\n })\n ];\n },\n events: {\n 'keyup input[name=\"userCode\"]': function(e) {\n e.preventDefault();\n this.addHyphen(e);\n }\n },\n addHyphen(evt) {\n const currentVal = evt.target.value;\n // add hyphen after 4th character\n if (currentVal && currentVal.length === 4 && !['Backspace', 'Delete', '-'].includes(evt.key)) {\n evt.target.value = currentVal.concat('-');\n }\n }\n },\n});\n","/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 160] */\nimport {_, loc, View} from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\n\nconst DEVICE_ACTIVATED = 'DEVICE_ACTIVATED';\nconst DEVICE_NOT_ACTIVATED_CONSENT_DENIED = 'DEVICE_NOT_ACTIVATED_CONSENT_DENIED';\nconst DEVICE_NOT_ACTIVATED = 'DEVICE_NOT_ACTIVATED';\nconst DEVICE_CODE_ERROR_KEYS = [\n DEVICE_NOT_ACTIVATED_CONSENT_DENIED,\n DEVICE_NOT_ACTIVATED\n];\n\nexport default FormController.extend({\n className: 'device-code-terminal',\n postRender: function() {\n FormController.prototype.postRender.apply(this, arguments);\n\n // show device code terminal icons\n const iconClass = this.options.appState.get('deviceActivationStatus') === DEVICE_ACTIVATED\n ? 'success-24-green' : 'error-24-red';\n this.$('.o-form-head').before('
          ' +\n '' +\n '
          ');\n },\n Model: {},\n Form: {\n noCancelButton: true,\n noButtonBar: true,\n title: function() {\n const deviceActivationStatus = this.options.appState.get('deviceActivationStatus');\n if (deviceActivationStatus === DEVICE_ACTIVATED) {\n return loc('device.code.activated.success.title', 'login');\n }\n if (_.contains(DEVICE_CODE_ERROR_KEYS, deviceActivationStatus)) {\n return loc('device.code.activated.error.title', 'login');\n }\n },\n subtitle: function() {\n const deviceActivationStatus = this.options.appState.get('deviceActivationStatus');\n if (deviceActivationStatus === DEVICE_ACTIVATED) {\n return loc('idx.device.activated', 'login');\n }\n if (deviceActivationStatus === DEVICE_NOT_ACTIVATED_CONSENT_DENIED) {\n return loc('idx.device.not.activated.consent.denied', 'login');\n }\n if (deviceActivationStatus === DEVICE_NOT_ACTIVATED) {\n return loc('idx.device.not.activated.internal.error', 'login');\n }\n },\n formChildren: function() {\n return [\n FormType.View({\n View: View.extend({\n template: hbs(\n '{{#if isDeviceCodeError}}\\\n \\\n {{i18n code=\"oie.try.again\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n getTemplateData: function() {\n return {\n isDeviceCodeError: _.contains(DEVICE_CODE_ERROR_KEYS, this.options.appState.get('deviceActivationStatus'))\n };\n },\n }),\n }),\n ];\n }\n }\n});\n","/*!\n * Copyright (c) 2018-2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, internal } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport Footer from 'v1/views/enroll-factors/Footer';\nconst { Util } = internal.util;\nexport default FormController.extend({\n className: 'enroll-custom-factor',\n Model: {\n local: {\n provider: 'string',\n factorType: 'string',\n },\n save: function() {\n return this.manageTransaction((transaction, setTransaction) => {\n const factor = _.findWhere(transaction.factors, {\n provider: this.get('provider'),\n factorType: this.get('factorType'),\n });\n\n return factor\n .enroll()\n .then(trans => {\n setTransaction(trans);\n const url = this.appState.get('enrollCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n })\n .catch(function(err) {\n throw err;\n });\n });\n },\n },\n\n Form: function() {\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere({\n provider: this.options.provider,\n factorType: this.options.factorType,\n });\n const vendorName = factor.get('vendorName');\n const subtitle = loc('enroll.customFactor.subtitle', 'login', [vendorName]);\n const saveText = loc('enroll.customFactor.save', 'login');\n\n return {\n autoSave: true,\n title: vendorName,\n subtitle: subtitle,\n save: saveText,\n };\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n\n initialize: function() {\n this.model.set('provider', this.options.provider);\n this.model.set('factorType', this.options.factorType);\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint complexity: [2, 13] */\nimport { _, loc, Collection } from '@okta/courage';\nimport Q from 'q';\nimport { AuthStopPollInitiationError } from 'util/Errors';\nimport factorUtil from 'util/FactorUtil';\nimport Util from 'util/Util';\nimport BaseLoginModel from './BaseLoginModel';\nconst PUSH_INTERVAL = 4000;\n\n// Avoid setting interval to same value as keep-alive time (5 seconds) because it\n// caused an occasional issue with network connection lost errors in Safari and IE\n\nconst FactorFactor = BaseLoginModel.extend({\n extraProperties: true,\n flat: false,\n\n props: {\n id: 'string',\n factorType: {\n type: 'string',\n values: [\n 'sms',\n 'call',\n 'email',\n 'token',\n 'token:software:totp',\n 'token:hotp',\n 'token:hardware',\n 'question',\n 'push',\n 'u2f',\n 'password',\n 'assertion:saml2',\n 'assertion:oidc',\n 'claims_provider',\n 'webauthn',\n ],\n },\n provider: {\n type: 'string',\n values: [\n 'OKTA',\n 'RSA',\n 'DEL_OATH',\n 'SYMANTEC',\n 'GOOGLE',\n 'YUBICO',\n 'FIDO',\n 'CUSTOM',\n 'GENERIC_SAML',\n 'GENERIC_OIDC',\n ],\n },\n enrollment: {\n type: 'string',\n values: ['OPTIONAL', 'REQUIRED'],\n },\n status: {\n type: 'string',\n values: ['NOT_SETUP', 'ACTIVE'],\n },\n profile: ['object'],\n vendorName: 'string',\n policy: ['object'],\n profiles: ['object'],\n },\n\n local: {\n answer: 'string',\n password: 'string',\n backupFactor: 'object',\n showAnswer: 'boolean',\n rememberDevice: 'boolean',\n autoPush: ['boolean', true, false],\n },\n\n derived: {\n isOktaFactor: {\n deps: ['provider'],\n fn: function(provider) {\n return provider === 'OKTA';\n },\n },\n factorName: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorName,\n },\n factorLabel: {\n deps: ['provider', 'factorType', 'vendorName'],\n fn: function(provider, factorType, vendorName) {\n if (_.contains(['DEL_OATH', 'GENERIC_SAML', 'GENERIC_OIDC', 'CUSTOM'], provider)) {\n return vendorName;\n }\n return factorUtil.getFactorLabel.apply(this, [provider, factorType]);\n },\n },\n factorDescription: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorDescription,\n },\n sortOrder: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorSortOrder,\n },\n iconClassName: {\n deps: ['provider', 'factorType'],\n fn: factorUtil.getFactorIconClassName,\n },\n securityQuestion: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType !== 'question') {\n return null;\n }\n return profile && factorUtil.getSecurityQuestionLabel(profile);\n },\n },\n phoneNumber: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (_.contains(['sms', 'call'], factorType)) {\n return profile && profile.phoneNumber;\n }\n return null;\n },\n },\n email: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType === 'email') {\n return profile && profile.email;\n }\n return null;\n },\n },\n deviceName: {\n deps: ['profile', 'factorType'],\n fn: function(profile, factorType) {\n if (factorType !== 'push') {\n return null;\n }\n return profile && profile.name;\n },\n },\n enrolled: {\n deps: ['status'],\n fn: function(status) {\n return status === 'ACTIVE';\n },\n },\n cardinality: {\n deps: ['policy', 'profiles'],\n fn: function(policy, profiles) {\n if (profiles && profiles.length > 0) {\n const profile = profiles[0];\n //assume for now we only get one profile (multiple profiles are not supported yet)\n\n const enrolled = profile._embedded.enrolledFactors.length;\n\n const adoption = _.findWhere(profile._embedded.features, { type: 'adoption' });\n\n if (adoption && adoption.cardinality) {\n return {\n enrolled: enrolled,\n minimum: adoption.cardinality.min,\n maximum: adoption.cardinality.max,\n };\n }\n return false;\n } else if (policy && policy.enrollment) {\n return policy.enrollment;\n } else {\n return false;\n }\n },\n },\n additionalEnrollment: {\n deps: ['cardinality'],\n fn: function(cardinality) {\n if (cardinality) {\n return cardinality.enrolled !== 0 && cardinality.enrolled < cardinality.maximum;\n } else {\n return false;\n }\n },\n },\n required: {\n deps: ['enrollment'],\n fn: function(enrollment) {\n return enrollment === 'REQUIRED';\n },\n },\n canUseResend: {\n deps: ['provider', 'factorType'],\n fn: function(provider, factorType) {\n // Only push, sms and call have resend links.\n return provider === 'OKTA' && _.contains(['push', 'sms', 'call', 'email'], factorType);\n },\n },\n isAnswerRequired: {\n deps: ['factorType'],\n fn: function(factorType) {\n return _.contains(['sms', 'call', 'email', 'token', 'token:software:totp', 'question'], factorType);\n },\n },\n isFactorTypeVerification: {\n deps: ['provider', 'id'],\n fn: function(provider, id) {\n return provider === undefined && id === undefined;\n },\n },\n },\n\n parse: function(attributes) {\n this.settings = attributes.settings;\n this.appState = attributes.appState;\n // set the initial value for remember device.\n attributes.rememberDevice = factorUtil.getRememberDeviceValue(this.appState);\n\n // Add vendorname for custom totp enroll\n this.setCustomHotpVendorName(attributes);\n return _.omit(attributes, ['settings', 'appState']);\n },\n\n validate: function() {\n if (this.get('isAnswerRequired') && !this.get('answer')) {\n return { answer: loc('model.validation.field.blank') };\n } else if (this.get('factorType') === 'password' && !this.get('password')) {\n return { password: loc('error.password.required') };\n }\n },\n needsPasscode: function() {\n // we don't need passcode for email with magic link flow\n return !(this.options.appState.get('isIdxStateToken') && this.get('factorType') === 'email');\n },\n resend: function() {\n this.trigger('form:clear-errors');\n return this.manageTransaction(function(transaction) {\n const firstLink = transaction.data._links.resend[0];\n\n return transaction.resend(firstLink.name);\n });\n },\n\n save: function() {\n const rememberDevice = !!this.get('rememberDevice');\n const self = this;\n // Set/Remove the remember device cookie based on the remember device input.\n\n return this.manageTransaction(function(transaction, setTransaction) {\n const data = {\n rememberDevice: rememberDevice,\n };\n\n if (this.get('factorType') === 'question') {\n data.answer = this.get('answer');\n } else if (this.get('factorType') === 'password') {\n data.password = this.get('password');\n } else if (this.needsPasscode()) {\n data.passCode = this.get('answer');\n }\n\n if (this.pushFactorHasAutoPush()) {\n data.autoPush = this.get('autoPush');\n }\n\n let promise;\n\n // MFA_REQUIRED, FACTOR_REQUIRED or UNAUTHENTICATED with factors (passwordlessAuth)\n if (\n transaction.status === 'MFA_REQUIRED' ||\n transaction.status === 'FACTOR_REQUIRED' ||\n this.appState.get('promptForFactorInUnauthenticated')\n ) {\n const factor = this._findFactor(transaction);\n\n promise = factor.verify(data);\n } else if (this.get('canUseResend') && !this.get('answer') && transaction.resend) {\n // MFA_CHALLENGE/ FACTOR_CHALLENGE\n const firstLink = transaction.data._links.resend[0];\n\n promise = transaction.resend(firstLink.name);\n } else {\n promise = transaction.verify(data);\n }\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button on the factor form\n this.trigger('save');\n\n return promise.then(function(trans) {\n const options = {\n delay: PUSH_INTERVAL,\n transactionCallBack: transaction => {\n self.options.appState.set('lastAuthResponse', transaction);\n },\n };\n\n setTransaction(trans);\n // In Okta verify case we initiate poll.\n if ((trans.status === 'MFA_CHALLENGE' && trans.poll) || (trans.status === 'FACTOR_CHALLENGE' && trans.poll)) {\n const deferred = Q.defer();\n const initiatePollTimout = Util.callAfterTimeout(deferred.resolve, PUSH_INTERVAL);\n self.listenToOnce(self.options.appState, 'factorSwitched', () => {\n clearTimeout(initiatePollTimout);\n deferred.reject(new AuthStopPollInitiationError());\n });\n return deferred.promise.then(function() {\n // Stop listening if factor was not switched before poll.\n self.stopListening(self.options.appState, 'factorSwitched');\n if (self.pushFactorHasAutoPush()) {\n options.autoPush = function() {\n return self.get('autoPush');\n };\n options.rememberDevice = function() {\n return self.get('rememberDevice');\n };\n }\n return trans.poll(options).then(function(trans) {\n self.options.appState.set('lastAuthResponse', trans.data);\n setTransaction(trans);\n });\n });\n }\n });\n });\n },\n\n _findFactor: function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: this.get('factorType'),\n });\n }\n if (!factor) {\n factor = _.findWhere(transaction.factors, {\n id: this.get('id'),\n });\n }\n return factor;\n },\n\n pushFactorHasAutoPush: function() {\n return this.settings.get('features.autoPush') && this.get('factorType') === 'push';\n },\n\n setCustomHotpVendorName: function(attributes) {\n // If factor is token:hotp and not enrolled, we assume the first profile is the default.\n // If factor is enrolled, we only support one profile to be enrolled, so find that one\n // and display as enrolled profile. We do this by populating profile name in vendorName.\n if (attributes.factorType === 'token:hotp' && attributes.profiles) {\n if (attributes.status === 'NOT_SETUP') {\n attributes.vendorName = attributes.profiles[0].name;\n } else if (attributes.status === 'ACTIVE') {\n const enrolledProfiles = attributes.profiles.filter(profile => {\n return profile._embedded.enrolledFactors.length > 0;\n });\n attributes.vendorName = enrolledProfiles[0].name;\n }\n }\n return attributes;\n },\n});\nconst FactorFactors = Collection.extend({\n model: FactorFactor,\n comparator: 'sortOrder',\n\n // One override necessary here - When Okta Verify OTP and Push are in the list,\n // they are presented in the view as one factor - in the beacon menu,\n // there's only one option (Okta Verify), and we show a form with Push\n // with an inline totp option. What we need to do is to add totp\n // as a \"backupFactor\" for push\n parse: function(factors) {\n // Keep a track of the last used factor, since\n // we need it to determine the default factor.\n this.lastUsedFactor = factors[0];\n\n const oktaPushFactor = _.findWhere(factors, { provider: 'OKTA', factorType: 'push' });\n\n let totpFactor;\n\n if (_.where(factors, { factorType: 'push' }).length > 1) {\n totpFactor = _.findWhere(factors, { factorType: 'token:software:totp' });\n } else {\n totpFactor = _.findWhere(factors, { provider: 'OKTA', factorType: 'token:software:totp' });\n }\n if (!oktaPushFactor || !totpFactor) {\n return factors;\n }\n\n const isTotpFirst = totpFactor === factors[0];\n\n const parsedFactors = _.reduce(\n factors,\n function(memo, factor) {\n const isOkta = factor.provider === 'OKTA';\n const isOktaTotp = isOkta && factor.factorType === 'token:software:totp';\n const isOktaPush = isOkta && factor.factorType === 'push';\n const notEnrolled = factor.status !== 'ACTIVE';\n const hideOktaTotp = isOktaTotp && (notEnrolled || oktaPushFactor.status === 'ACTIVE');\n const hideOktaPush = isOktaPush && notEnrolled && totpFactor.status === 'ACTIVE';\n\n if (hideOktaTotp || hideOktaPush) {\n return memo;\n }\n\n if (isOktaPush) {\n factor.backupFactor = new FactorFactor(totpFactor, { parse: true });\n }\n memo.push(factor);\n return memo;\n },\n []\n );\n\n // Use push factor instead of TOTP, if TOTP is first in the list\n // (since it is stored as backupFactor for push).\n if (isTotpFirst) {\n this.lastUsedFactor = oktaPushFactor;\n }\n\n return parsedFactors;\n },\n\n // Will need to update this to use HAL link to get last used factor:\n // https://oktainc.atlassian.net/browse/OKTA-58380\n // However, current code returns last used factor as first factor in list.\n // Also, will need to add priority - i.e. if they do not have a last used\n // factor, should try Okta Verify, then Okta SMS, etc.\n getDefaultFactor: function() {\n const factor = _.pick(this.lastUsedFactor, 'factorType', 'provider');\n\n return this.findWhere(factor);\n },\n\n getFirstUnenrolledRequiredFactor: function() {\n return this.findWhere({ required: true, enrolled: false });\n },\n\n _getFactorsOfType: function(factorType) {\n return this.where({ factorType: factorType });\n },\n\n getFactorIndex: function(factorType, factorId) {\n return this._getFactorsOfType(factorType).findIndex(function(factor) {\n return factor.get('id') === factorId;\n });\n },\n\n hasMultipleFactorsOfSameType: function(factorType) {\n return this._getFactorsOfType(factorType).length > 1;\n },\n\n getFactorByTypeAndIndex: function(factorType, factorIndex) {\n return this._getFactorsOfType(factorType)[factorIndex];\n },\n});\nexport default {\n Model: FactorFactor,\n Collection: FactorFactors,\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nconst template = hbs('\\\n \\\n

          {{{message}}}

          \\\n ');\n\n// Have to be unescaped for the html in enroll.windowsHello.error.notConfiguredHtml\n\nexport default View.extend({\n template: template,\n className: 'okta-infobox-error infobox infobox-error infobox-md margin-btm-25',\n attributes: {\n 'data-se': 'o-form-error-html',\n },\n\n message: '',\n\n initialize: function(options) {\n if (options && options.message) {\n this.message = options.message;\n }\n },\n\n getTemplateData: function() {\n return {\n message: this.message,\n };\n },\n});\n","/*!\n * Copyright (c) 2019-2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc, internal } from '@okta/courage';\nimport EnrollCustomFactorController from './EnrollCustomFactorController';\nimport Factor from 'v1/models/Factor';\nimport FormType from 'v1/util/FormType';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nconst { Util } = internal.util;\nexport default EnrollCustomFactorController.extend({\n Model: {\n local: {\n provider: 'string',\n factorType: 'string',\n },\n save: function() {\n return this.manageTransaction(() => {\n const url = this.appState.get('enrollCustomFactorRedirectUrl');\n\n if (url !== null) {\n Util.redirect(url);\n }\n });\n },\n },\n\n Form: function() {\n const factor = new Factor.Model(this.options.appState.get('factor'), this.toJSON());\n const vendorName = factor.get('vendorName');\n const subtitle = loc('enroll.customFactor.subtitle', 'login', [vendorName]);\n const saveText = loc('enroll.customFactor.save', 'login');\n\n return {\n autoSave: true,\n title: vendorName,\n subtitle: subtitle,\n save: saveText,\n formChildren: function() {\n const result = [];\n\n if (this.options.appState.get('isFactorResultFailed')) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: this.options.appState.get('factorResultErrorMessage') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n return result;\n },\n };\n },\n});\n","/*!\n * Copyright (c) 2020-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n className: 'hide resend-email-infobox',\n template: hbs`\n
          \n \n

          \n {{i18n code=\"email.code.not.received\" bundle=\"login\"}}\n \n {{i18n code=\"email.button.resend\" bundle=\"login\"}}\n \n

          \n
          \n `,\n\n events: {\n 'click .resend-email-btn': 'resendEmail',\n },\n\n postRender: function() {\n this.showResendCallout();\n },\n\n showResendCallout: function() {\n _.delay(() => {\n this.$el.removeClass('hide');\n }, Enums.API_RATE_LIMIT);\n },\n\n hideResendCallout: function() {\n this.$el.addClass('hide');\n },\n\n resendEmail: function(e) {\n e.preventDefault();\n this.hideResendCallout();\n this.model.resend().finally(this.showResendCallout.bind(this));\n },\n});\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport ResendEmailView from 'v1/views/ResendEmailView';\nimport Footer from 'v1/views/enroll-factors/Footer';\n\nconst Model = {\n props: {\n passCode: 'string',\n },\n\n resend: function() {\n this.trigger('form:clear-errors');\n return this.doTransaction(function(transaction) {\n // authn support multiple `resend` hence has to specify name.\n return transaction.resend('email');\n });\n },\n\n save: function() {\n this.trigger('save');\n const formData = this.toJSON();\n return this.doTransaction(function(transaction) {\n return transaction.activate(formData);\n });\n },\n};\n\nconst Form = function() {\n return {\n title: _.partial(loc, 'email.enroll.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n save: _.partial(loc, 'oform.verify', 'login'), // TODO: deprecated by mfa.challenge.verify\n formChildren: [\n // message\n FormType.View({\n View: View.extend({\n className: 'enroll-activate-email-content',\n attributes: {\n 'data-se': 'enroll-activate-email-content',\n },\n\n // Why use `{{{` for the description?\n // - factorEmail is actually an HTML fragment which\n // is created via another handlebar template and used for bold the email address.\n template: hbs('{{{i18n code=\"email.mfa.email.sent.description\" bundle=\"login\" arguments=\"factorEmail\"}}}'),\n\n getTemplateData: function() {\n const factor = this.options.appState.get('factor');\n const factorEmailVal = factor && factor.profile ? factor.profile.email : '';\n const factorEmail = hbs('{{email}}')({ email: factorEmailVal });\n return {\n factorEmail,\n };\n },\n }),\n }),\n // send again callout message and link button\n FormType.View({\n View: ResendEmailView,\n }),\n // passcode input\n FormType.Input({\n label: loc('email.code.label', 'login'),\n 'label-top': true,\n name: 'passCode',\n type: 'text',\n wide: true,\n }),\n ],\n };\n};\n\nexport default FormController.extend({\n className: 'enroll-activate-email',\n\n Model: Model,\n\n Form: Form,\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint max-len:0 */\n\nexport default {\n US: '1',\n AG: '1',\n AI: '1',\n AS: '1',\n BB: '1',\n BM: '1',\n BS: '1',\n CA: '1',\n DM: '1',\n DO: '1',\n GD: '1',\n GU: '1',\n JM: '1',\n KN: '1',\n KY: '1',\n LC: '1',\n MP: '1',\n MS: '1',\n PR: '1',\n SX: '1',\n TC: '1',\n TT: '1',\n VC: '1',\n VG: '1',\n VI: '1',\n RU: '7',\n KZ: '7',\n EG: '20',\n ZA: '27',\n GR: '30',\n NL: '31',\n BE: '32',\n FR: '33',\n ES: '34',\n HU: '36',\n IT: '39',\n VA: '39',\n RO: '40',\n CH: '41',\n AT: '43',\n GB: '44',\n GG: '44',\n IM: '44',\n JE: '44',\n DK: '45',\n SE: '46',\n NO: '47',\n SJ: '47',\n PL: '48',\n DE: '49',\n PE: '51',\n MX: '52',\n CU: '53',\n AR: '54',\n BR: '55',\n CL: '56',\n CO: '57',\n VE: '58',\n MY: '60',\n AU: '61',\n CC: '61',\n CX: '61',\n ID: '62',\n PH: '63',\n NZ: '64',\n SG: '65',\n TH: '66',\n JP: '81',\n KR: '82',\n VN: '84',\n CN: '86',\n TR: '90',\n IN: '91',\n PK: '92',\n AF: '93',\n LK: '94',\n MM: '95',\n IR: '98',\n SS: '211',\n MA: '212',\n EH: '212',\n DZ: '213',\n TN: '216',\n LY: '218',\n GM: '220',\n SN: '221',\n MR: '222',\n ML: '223',\n GN: '224',\n CI: '225',\n BF: '226',\n NE: '227',\n TG: '228',\n BJ: '229',\n MU: '230',\n LR: '231',\n SL: '232',\n GH: '233',\n NG: '234',\n TD: '235',\n CF: '236',\n CM: '237',\n CV: '238',\n ST: '239',\n GQ: '240',\n GA: '241',\n CG: '242',\n CD: '243',\n AO: '244',\n GW: '245',\n IO: '246',\n AC: '247',\n SC: '248',\n SD: '249',\n RW: '250',\n ET: '251',\n SO: '252',\n DJ: '253',\n KE: '254',\n TZ: '255',\n UG: '256',\n BI: '257',\n MZ: '258',\n ZM: '260',\n MG: '261',\n RE: '262',\n YT: '262',\n ZW: '263',\n NA: '264',\n MW: '265',\n LS: '266',\n BW: '267',\n SZ: '268',\n KM: '269',\n SH: '290',\n TA: '290',\n ER: '291',\n AW: '297',\n FO: '298',\n GL: '299',\n GI: '350',\n PT: '351',\n LU: '352',\n IE: '353',\n IS: '354',\n AL: '355',\n MT: '356',\n CY: '357',\n FI: '358',\n AX: '358',\n BG: '359',\n LT: '370',\n LV: '371',\n EE: '372',\n MD: '373',\n AM: '374',\n BY: '375',\n AD: '376',\n MC: '377',\n SM: '378',\n UA: '380',\n RS: '381',\n ME: '382',\n XK: '383',\n HR: '385',\n SI: '386',\n BA: '387',\n MK: '389',\n CZ: '420',\n SK: '421',\n LI: '423',\n FK: '500',\n BZ: '501',\n GT: '502',\n SV: '503',\n HN: '504',\n NI: '505',\n CR: '506',\n PA: '507',\n PM: '508',\n HT: '509',\n GP: '590',\n BL: '590',\n MF: '590',\n BO: '591',\n GY: '592',\n EC: '593',\n GF: '594',\n PY: '595',\n MQ: '596',\n SR: '597',\n UY: '598',\n CW: '599',\n BQ: '599',\n TL: '670',\n NF: '672',\n BN: '673',\n NR: '674',\n PG: '675',\n TO: '676',\n SB: '677',\n VU: '678',\n FJ: '679',\n PW: '680',\n WF: '681',\n CK: '682',\n NU: '683',\n WS: '685',\n KI: '686',\n NC: '687',\n TV: '688',\n PF: '689',\n TK: '690',\n FM: '691',\n MH: '692',\n '001': '979',\n KP: '850',\n HK: '852',\n MO: '853',\n KH: '855',\n LA: '856',\n BD: '880',\n TW: '886',\n MV: '960',\n LB: '961',\n JO: '962',\n SY: '963',\n IQ: '964',\n KW: '965',\n SA: '966',\n YE: '967',\n OM: '968',\n PS: '970',\n AE: '971',\n IL: '972',\n BH: '973',\n QA: '974',\n BT: '975',\n MN: '976',\n NP: '977',\n TJ: '992',\n TM: '993',\n AZ: '994',\n GE: '995',\n KG: '996',\n UZ: '998',\n GS: '500',\n PN: '64',\n AQ: '672',\n UM: '1',\n AN: '599',\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport bundles from './Bundles';\nimport countryCallingCodes from './countryCallingCodes';\nconst fn = {};\n\n// () => [{ countryCode: countryName }], sorted by countryName\nfn.getCountries = function() {\n const countries = _.omit(bundles.country, 'HM', 'BV', 'TF');\n // HM, BV, and TF do not have phone prefixes, so don't give the\n // user the option to choose these countries. FYI it appears that these\n // countries do not have calling codes because they are ~~uninhabited~~\n\n let collection = _.map(countries, function(name, code) {\n return { name: name, code: code };\n });\n\n // Sort it; figure out if there is a better way to do this (best would\n // be to sort it in the properties file!!)\n\n collection = _.sortBy(collection, 'name');\n const sorted = {};\n\n _.each(collection, function(country) {\n sorted[country.code] = country.name;\n });\n\n return sorted;\n};\n\nfn.getCountryCode = function(){\n\n const countries = _.omit(bundles.country, 'HM', 'BV', 'TF');\n // HM, BV, and TF do not have phone prefixes, so don't give the\n // user the option to choose these countries. FYI it appears that these\n // countries do not have calling codes because they are ~~uninhabited~~\n\n let collection = _.map(countries, function(name, code) {\n return { name: name, code: code };\n });\n\n collection = _.sortBy(collection, 'name');\n const sorted = {};\n\n _.each(collection, function(country) {\n sorted[country.code] = loc('country.option.label', 'login', [country.name, country.code]);\n });\n\n return sorted;\n};\n\nfn.getCallingCodeForCountry = function(countryCode) {\n return countryCallingCodes[countryCode];\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, internal } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Util from 'util/Util';\n\nlet { TextBox } = internal.views.forms.inputs;\nexport default TextBox.extend({\n template: hbs(\n '\\\n {{countryCallingCode}}\\\n \\\n \\\n \\\n '\n ),\n\n initialize: function() {\n this.listenTo(this.model, 'change:countryCallingCode', function() {\n this.$('.o-form-label-inline').text(this.model.get('countryCallingCode'));\n });\n },\n\n preRender: function() {\n this.options.countryCallingCode = this.model.get('countryCallingCode');\n this.options.autocomplete = Util.getAutocompleteValue(this.options.model.settings, 'tel');\n },\n\n postRender: function() {\n // This is a hack - once inputGroups are done, get rid of it!!\n this.$el.removeClass('input-fix o-form-control');\n _.defer(() => {\n this.$el.parent().addClass('o-form-input-group');\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 8] */\nimport { _, loc, internal, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport PhoneTextBox from 'v1/views/enroll-factors/PhoneTextBox';\nimport TextBox from 'v1/views/shared/TextBox';\nlet { Keys } = internal.util;\nconst EnrollCallAndSmsControllerwarningTemplate = View.extend({\n className: 'okta-form-infobox-warning infobox infobox-warning login-timeout-warning',\n attributes: {\n 'aria-live': 'polite',\n },\n template: hbs`\n \n

          {{{warning}}}

          \n `,\n});\nconst factorIdIsDefined = {\n factorId: function(val) {\n return !_.isUndefined(val);\n },\n};\n\nfunction isCallFactor(factorType) {\n return factorType === 'call';\n}\n\nfunction getClassName(factorType) {\n return isCallFactor(factorType) ? 'enroll-call' : 'enroll-sms';\n}\n\nfunction sendCode(e) {\n if (Keys.isEnter(e)) {\n e.stopPropagation();\n e.preventDefault();\n if (e.type === 'keyup' && e.data && e.data.model) {\n e.data.model.sendCode();\n }\n }\n}\n\nexport default FormController.extend({\n className: function() {\n return getClassName(this.options.factorType);\n },\n Model: function() {\n return {\n props: {\n phoneNumber: ['string', true],\n phoneExtension: ['string', false],\n lastEnrolledPhoneNumber: 'string',\n passCode: ['string', true],\n factorId: 'string',\n },\n local: {\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n hasExistingPhones: 'boolean',\n trapEnrollment: 'boolean',\n ableToResend: 'boolean',\n factorType: 'string',\n skipPhoneValidation: 'boolean',\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return phoneNumber ? countryCallingCode + phoneNumber : '';\n },\n },\n enrolled: {\n deps: ['lastEnrolledPhoneNumber', 'fullPhoneNumber'],\n fn: function(lastEnrolled, current) {\n return lastEnrolled === current;\n },\n },\n },\n limitResending: function() {\n this.set({ ableToResend: false });\n _.delay(_.bind(this.set, this), Enums.API_RATE_LIMIT, { ableToResend: true });\n },\n sendCode: function() {\n const self = this;\n const phoneNumber = this.get('fullPhoneNumber');\n const phoneExtension = this.get('phoneExtension');\n \n self.trigger('errors:clear');\n \n if (!phoneNumber.length) {\n self.trigger('invalid', self, { phoneNumber: 'model.validation.field.blank' });\n return;\n }\n \n return this.doTransaction(function(transaction) {\n const isMfaEnroll = transaction.status === 'MFA_ENROLL' || transaction.status === 'FACTOR_ENROLL';\n const profileData = {\n phoneNumber: phoneNumber,\n updatePhone: isMfaEnroll ? self.get('hasExistingPhones') : true,\n };\n \n if (isCallFactor(self.get('factorType'))) {\n profileData['phoneExtension'] = phoneExtension;\n }\n \n if (self.get('skipPhoneValidation')) {\n profileData['validatePhone'] = false;\n }\n \n const doEnroll = function(trans) {\n const factor = _.findWhere(trans.factors, {\n factorType: self.get('factorType'),\n provider: 'OKTA',\n });\n \n return factor\n .enroll({\n profile: profileData,\n })\n .catch(function(error) {\n if (error.errorCode === 'E0000098') {\n // E0000098: \"This phone number is invalid.\"\n self.set('skipPhoneValidation', true);\n error.xhr.responseJSON.errorSummary = loc('enroll.sms.try_again', 'login');\n }\n throw error;\n });\n };\n \n if (isMfaEnroll) {\n return doEnroll(transaction);\n } else {\n // We must transition to MfaEnroll before updating the phone number\n self.set('trapEnrollment', true);\n return transaction.prev().then(doEnroll).then(function(trans) {\n self.set('trapEnrollment', false);\n return trans;\n });\n }\n // Rethrow errors so we can change state\n // AFTER setting the new transaction\n }, true)\n .then(function() {\n self.set('lastEnrolledPhoneNumber', phoneNumber);\n self.limitResending();\n })\n .catch(function() {\n self.set('trapEnrollment', false);\n });\n },\n resendCode: function() {\n this.trigger('errors:clear');\n this.limitResending();\n return this.doTransaction(function(transaction) {\n return transaction.resend(this.get('factorType'));\n });\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n Form: function() {\n const factorType = this.options.factorType;\n const isCall = isCallFactor(factorType);\n const formTitle = loc(isCall ? 'enroll.call.setup' : 'enroll.sms.setup', 'login');\n const formSubmit = loc(isCall ? 'mfa.call' : 'mfa.sendCode', 'login');\n const formRetry = loc(isCall ? 'mfa.redial' : 'mfa.resendCode', 'login');\n const formSubmitted = loc(isCall ? 'mfa.calling' : 'mfa.sent', 'login');\n const numberFieldClassName = isCall ? 'enroll-call-phone' : 'enroll-sms-phone';\n const buttonClassName = isCall ? 'call-request-button' : 'sms-request-button';\n const formChildren = [\n FormType.Input({\n name: 'countryCode',\n type: 'select',\n wide: true,\n options: CountryUtil.getCountries(),\n }),\n FormType.Input({\n label: loc('mfa.phoneNumber.placeholder', 'login'),\n 'label-top': true,\n className: numberFieldClassName,\n name: 'phoneNumber',\n input: PhoneTextBox,\n type: 'text',\n render: function() {\n this.$('input[name=\"phoneNumber\"]')\n .off('keydown keyup', sendCode)\n .keydown(sendCode)\n .keyup({ model: this.model }, sendCode);\n },\n }),\n ];\n\n if (isCall) {\n formChildren.push(\n FormType.Input({\n label: loc('mfa.phoneNumber.ext.placeholder', 'login'),\n 'label-top': true,\n className: 'enroll-call-extension',\n name: 'phoneExtension',\n input: TextBox,\n type: 'text',\n })\n );\n }\n formChildren.push(\n FormType.Button({\n title: formSubmit,\n attributes: { 'data-se': buttonClassName },\n className: 'button button-primary js-enroll-phone margin-top-30 ' + buttonClassName,\n click: function() {\n this.model.sendCode();\n },\n }),\n FormType.Button({\n title: formRetry,\n attributes: { 'data-se': buttonClassName },\n className: 'button js-enroll-phone margin-top-30 ' + buttonClassName,\n click: function() {\n this.model.resendCode();\n },\n initialize: function() {\n this.$el.css({ display: 'none' });\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.options.title = formRetry;\n this.enable();\n } else {\n this.options.title = formSubmitted;\n this.disable();\n }\n this.render();\n });\n },\n }),\n FormType.Divider({\n showWhen: factorIdIsDefined,\n }),\n FormType.Input({\n label: loc('mfa.challenge.enterCode.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'mfa.challenge.enterCode.tooltip',\n 'mfa.challenge.enterCode.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'tel',\n showWhen: factorIdIsDefined,\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n showWhen: factorIdIsDefined,\n })\n );\n\n return {\n title: formTitle,\n noButtonBar: true,\n autoSave: true,\n className: getClassName(factorType),\n\n showWarning: function(msg) {\n this.clearWarnings();\n this.add(EnrollCallAndSmsControllerwarningTemplate, '.o-form-error-container', { options: { warning: msg } });\n },\n\n clearWarnings: function() {\n this.$('.okta-form-infobox-warning').remove();\n },\n\n initialize: function() {\n const callTimeWarning = hbs`{{i18n\n code=\"factor.call.time.warning\"\n bundle=\"login\"\n $1=\"$1\"\n }}`;\n const smsTimeWarning = hbs`{{i18n\n code=\"factor.sms.time.warning\"\n bundle=\"login\"\n $1=\"$1\"\n }}`;\n this.listenTo(this.model, 'change:ableToResend', function(model, ableToResend) {\n if (ableToResend) {\n this.showWarning(isCall ? callTimeWarning : smsTimeWarning);\n } else {\n this.clearWarnings();\n }\n });\n this.listenTo(this.model, 'error errors:clear', function() {\n this.clearWarnings();\n this.clearErrors();\n });\n this.listenTo(this.model, 'change:enrolled', function() {\n this.$('.js-enroll-phone').toggle();\n });\n },\n formChildren: formChildren,\n };\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.set('factorId', this.options.appState.get('activatedFactorId'));\n return true;\n }\n if (this.options.appState.get('isMfaEnroll') && this.model.get('trapEnrollment')) {\n return true;\n }\n },\n\n initialize: function() {\n if (isCallFactor(this.options.factorType)) {\n this.model.set('hasExistingPhones', this.options.appState.get('hasExistingPhonesForCall'));\n } else {\n this.model.set('hasExistingPhones', this.options.appState.get('hasExistingPhones'));\n }\n this.model.set('factorType', this.options.factorType);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, ListView, View, createButton, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport RouterUtil from 'v1/util/RouterUtil';\nconst cardinalityTextTpl = hbs('{{cardinalityText}}');\nconst FactorListFactorRow = View.extend({\n tagName: 'li',\n\n className: 'enroll-factor-row clearfix',\n\n template: hbs(\n '\\\n
          \\\n
          \\\n
          \\\n
          \\\n
          \\\n

          {{factorLabel}}

          \\\n {{#if factorDescription}}\\\n

          {{factorDescription}}

          \\\n {{/if}}\\\n
          \\\n
          \\\n '\n ),\n\n attributes: function() {\n return { 'data-se': this.model.get('factorName') };\n },\n\n children: function() {\n const children = [];\n const enrolled = this.model.get('enrolled');\n const required = this.model.get('required');\n const cardinality = this.model.get('cardinality');\n\n if (this.options.showInlineSetupButton) {\n return [\n [\n createButton({\n className: 'button',\n title: this.getSetupButtonText(),\n click: function() {\n this.options.appState.trigger(\n 'navigate',\n RouterUtil.createEnrollFactorUrl(this.model.get('provider'), this.model.get('factorType'))\n );\n },\n }),\n '.enroll-factor-button',\n ],\n ];\n } else if (enrolled) {\n children.push(['', '.enroll-factor-label']);\n } else if (required) {\n children.push(['', '.enroll-factor-label']);\n }\n\n const cardinalityText = FactorUtil.getCardinalityText(enrolled, required, cardinality);\n\n if (cardinalityText) {\n children.push([cardinalityTextTpl({ cardinalityText: cardinalityText }), '.enroll-factor-description']);\n }\n return children;\n },\n\n minimize: function() {\n this.$el.addClass('enroll-factor-row-min');\n },\n\n maximize: function() {\n this.$el.removeClass('enroll-factor-row-min');\n },\n\n getSetupButtonText: function() {\n return this.model.get('additionalEnrollment')\n ? loc('enroll.choices.setup.another', 'login')\n : loc('enroll.choices.setup', 'login');\n },\n});\nexport default ListView.extend({\n className: 'enroll-factor-list',\n\n item: FactorListFactorRow,\n\n itemSelector: '.list-content',\n\n template: hbs(\n '\\\n {{#if listTitle}}\\\n

          {{listTitle}}

          \\\n {{/if}}\\\n
            \\\n '\n ),\n\n getTemplateData: function() {\n const json = ListView.prototype.getTemplateData.call(this);\n\n _.extend(json, this);\n return json;\n },\n\n postRender: function() {\n if (this.options.minimize) {\n this.invoke('minimize');\n }\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nexport default View.extend({\n template: hbs`\n \n {{i18n code=\"enroll.choices.setup.skip\" bundle=\"login\"}}\n \n `,\n className: 'auth-footer clearfix',\n events: {\n 'click .js-skip': function(e) {\n e.preventDefault();\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n },\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FactorList from './FactorList';\nexport default FactorList.extend({\n listTitle: _.partial(loc, 'enroll.choices.list.setup', 'login'),\n\n className: function() {\n return FactorList.prototype.className + ' enroll-required-factor-list';\n },\n\n postRender: function() {\n let currentModel;\n let currentRow;\n\n FactorList.prototype.postRender.apply(this, arguments);\n currentModel = this.options.appState.get('factors').getFirstUnenrolledRequiredFactor();\n currentRow = this.find(function(view) {\n return view.model === currentModel;\n });\n currentRow.maximize();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 13] */\n\nimport { _, loc, Collection } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FactorList from 'v1/views/enroll-choices/FactorList';\nimport Footer from 'v1/views/enroll-choices/Footer';\nimport RequiredFactorList from 'v1/views/enroll-choices/RequiredFactorList';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport RouterUtil from 'v1/util/RouterUtil';\nconst subtitleTpl = hbs('{{{subtitle}}}');\nexport default FormController.extend({\n className: 'enroll-choices',\n state: {\n pageType: null,\n },\n\n Model: {},\n\n Form: {\n noCancelButton: true,\n\n title: _.partial(loc, 'enroll.choices.title', 'login'),\n\n noButtonBar: function() {\n return this.state.get('pageType') === Enums.ALL_OPTIONAL_NONE_ENROLLED;\n },\n\n subtitle: ' ',\n\n getSubtitle: function() {\n switch (this.state.get('pageType')) {\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n return loc('enroll.choices.optional', 'login');\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED: {\n const remainingDays = this.options.appState.get('gracePeriodRemainingDays');\n\n // remainingDays is null if there is no grace period, 0 if we are still in grace period\n return (remainingDays !== null && remainingDays >= 0)\n ? this.getGracePeriodSubtitle(remainingDays)\n : this.getDefaultSubtitle();\n }\n default:\n return this.getDefaultSubtitle();\n }\n },\n\n getDefaultSubtitle: function() {\n return this.settings.get('brandName')\n ? loc('enroll.choices.description.specific', 'login', [this.settings.get('brandName')])\n : loc('enroll.choices.description.generic', 'login');\n },\n\n getGracePeriodSubtitle: function(remainingDays) {\n return remainingDays >= 1\n ? loc('enroll.choices.description.gracePeriod.bold', 'login', [remainingDays])\n : loc('enroll.choices.description.gracePeriod.oneDay.bold', 'login');\n },\n\n save: function() {\n switch (this.state.get('pageType')) {\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n return loc('enroll.choices.submit.finish', 'login');\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n return loc('enroll.choices.submit.configure', 'login');\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n return loc('enroll.choices.submit.next', 'login');\n default:\n return '';\n }\n },\n\n initialize: function(options) {\n this.listenTo(this, 'save', function() {\n let current;\n\n switch (this.state.get('pageType')) {\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n current = options.appState.get('factors').getFirstUnenrolledRequiredFactor();\n options.appState.trigger(\n 'navigate',\n RouterUtil.createEnrollFactorUrl(current.get('provider'), current.get('factorType'))\n );\n break;\n default:\n return this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n }\n });\n },\n\n preRender: function() {\n // form subtitle does not support unescaped strings, and we need some html elements\n // in the subtitle for this form. So instead of a regular subtitle, we add a \n // with the text we need\n this.add(subtitleTpl({ subtitle: this.getSubtitle() }), 'p.okta-form-subtitle');\n\n const factors = this.options.appState.get('factors');\n\n switch (this.state.get('pageType')) {\n case Enums.HAS_REQUIRED_NONE_ENROLLED:\n case Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED:\n this.add(\n new RequiredFactorList({\n minimize: true,\n collection: new Collection(factors.where({ required: true })),\n appState: this.options.appState,\n })\n );\n break;\n case Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED:\n case Enums.ALL_OPTIONAL_SOME_ENROLLED:\n case Enums.ALL_OPTIONAL_NONE_ENROLLED: {\n const enrolled = factors.where({ enrolled: true });\n const notEnrolled = factors.filter(function(factor) {\n // pick factors that are not enrolled or have additional enrollments\n return !factor.get('enrolled') || factor.get('additionalEnrollment');\n });\n let notEnrolledListTitle;\n\n if (enrolled.length > 0) {\n notEnrolledListTitle = loc('enroll.choices.list.optional', 'login');\n this.add(\n new FactorList({\n listTitle: loc('enroll.choices.list.enrolled', 'login'),\n minimize: true,\n collection: new Collection(enrolled),\n appState: this.options.appState,\n })\n );\n }\n this.add(\n new FactorList({\n listTitle: notEnrolledListTitle,\n collection: new Collection(notEnrolled),\n appState: this.options.appState,\n showInlineSetupButton: true,\n })\n );\n break;\n }\n }\n },\n },\n\n initialize: function(options) {\n let numRequiredEnrolled = 0;\n let numRequiredNotEnrolled = 0;\n let numOptionalEnrolled = 0;\n let numOptionalNotEnrolled = 0;\n let hasRequired;\n let pageType;\n\n options.appState.get('factors').each(function(factor) {\n const required = factor.get('required');\n const enrolled = factor.get('enrolled');\n const additionalEnrollment = factor.get('additionalEnrollment');\n\n if (required && enrolled) {\n numRequiredEnrolled++;\n } else if (required && !enrolled) {\n numRequiredNotEnrolled++;\n } else if (!required && enrolled) {\n numOptionalEnrolled++;\n } else if (!required && !enrolled) {\n numOptionalNotEnrolled++;\n }\n // If a factor has multiple instances and\n // additional optional enrollments\n if (enrolled && additionalEnrollment) {\n numOptionalNotEnrolled++;\n }\n });\n\n hasRequired = numRequiredEnrolled > 0 || numRequiredNotEnrolled > 0;\n\n // There are 5 possible states this screen can be in:\n\n // 1. Has required, but none have been enrolled. Wizard start page.\n if (hasRequired && numRequiredEnrolled === 0) {\n pageType = Enums.HAS_REQUIRED_NONE_ENROLLED;\n } else if (hasRequired && numRequiredNotEnrolled > 0) {\n // 2. Has required, and have enrolled at least one. The page layout\n // to configure the remaining required factors.\n pageType = Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED;\n } else if (hasRequired && numOptionalNotEnrolled > 0) {\n // 3. Has required, and finished enrolling all required factors. The\n // page layout you see to configure any optional factors or skip.\n pageType = Enums.HAS_REQUIRED_ALL_REQUIRED_ENROLLED;\n } else if (numOptionalEnrolled === 0 && numOptionalNotEnrolled > 0) {\n // 4. Factors are all optional, no factors enrolled.\n pageType = Enums.ALL_OPTIONAL_NONE_ENROLLED;\n } else if (numOptionalNotEnrolled > 0) {\n // 5. Factors are all optional, some factors have already been\n // enrolled (can either enroll more or skip).\n pageType = Enums.ALL_OPTIONAL_SOME_ENROLLED;\n } else {\n // 6. Factors are all optional, all factors have already been\n // enrolled, among them there is OktaVerify with Push enrolled as totp\n // (API return OktaVerify push factor as unenrolled in this case and as we always merge\n // push and totp in UI so we redirect to skip link here).\n this.model.doTransaction(function(transaction) {\n return transaction.skip();\n });\n }\n\n this.state.set('pageType', pageType);\n\n if (this.options.appState.get('skipLink') && pageType === Enums.HAS_REQUIRED_SOME_REQUIRED_ENROLLED) {\n this.add(new Footer(this.toJSON()));\n }\n },\n});\n","/**\n * \n * This file has been modified to override doPostBack\n * Check out the doPostBack function below for more details.\n * Override the doPostBack function when upgrading.\n * Unable to make a wrapper because it is invoked using an internal name within \n * this library.\n * \n * Current Verison = https://github.com/duosecurity/duo_web_sdk/blob/7aec8dd895ea4bd4549069e76076850eccfe07f2/index.js\n * PS: they dont seem to version correctly hence using commit.\n */\n\n/**\n * Duo Web SDK v2\n * Copyright 2019, Duo Security\n */\n\n// Modified to remove AMD and support ESM transform - OKTA-369648\n(function (root, factory) {\n module.exports = factory();\n}(this, function() {\n var DUO_MESSAGE_FORMAT = /^(?:AUTH|ENROLL)+\\|[A-Za-z0-9\\+\\/=]+\\|[A-Za-z0-9\\+\\/=]+$/;\n var DUO_ERROR_FORMAT = /^ERR\\|[\\w\\s\\.\\(\\)]+$/;\n var DUO_OPEN_WINDOW_FORMAT = /^DUO_OPEN_WINDOW\\|/;\n var VALID_OPEN_WINDOW_DOMAINS = [\n 'duo.com',\n 'duosecurity.com',\n 'duomobile.s3-us-west-1.amazonaws.com'\n ];\n\n var postAction,\n postArgument,\n host,\n sigRequest,\n duoSig,\n appSig,\n iframe,\n submitCallback;\n\n // We use this function instead of setting initial values in the var\n // declarations to make sure the initial values and subsequent\n // re-initializations are always the same.\n initializeStatefulVariables();\n\n /**\n * Set local variables to whatever they should be before you call init().\n */\n function initializeStatefulVariables() {\n postAction = '';\n postArgument = 'sig_response';\n host = undefined;\n sigRequest = undefined;\n duoSig = undefined;\n appSig = undefined;\n iframe = undefined;\n submitCallback = undefined;\n }\n\n function throwError(message, givenUrl) {\n var url = (\n givenUrl ||\n 'https://www.duosecurity.com/docs/duoweb#3.-show-the-iframe'\n );\n throw new Error(\n 'Duo Web SDK error: ' + message +\n (url ? ('\\n' + 'See ' + url + ' for more information') : '')\n );\n }\n\n function hyphenize(str) {\n return str.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n // cross-browser data attributes\n function getDataAttribute(element, name) {\n if ('dataset' in element) {\n return element.dataset[name];\n } else {\n return element.getAttribute('data-' + hyphenize(name));\n }\n }\n\n // cross-browser event binding/unbinding\n function on(context, event, fallbackEvent, callback) {\n if ('addEventListener' in window) {\n context.addEventListener(event, callback, false);\n } else {\n context.attachEvent(fallbackEvent, callback);\n }\n }\n\n function off(context, event, fallbackEvent, callback) {\n if ('removeEventListener' in window) {\n context.removeEventListener(event, callback, false);\n } else {\n context.detachEvent(fallbackEvent, callback);\n }\n }\n\n function onReady(callback) {\n on(document, 'DOMContentLoaded', 'onreadystatechange', callback);\n }\n\n function offReady(callback) {\n off(document, 'DOMContentLoaded', 'onreadystatechange', callback);\n }\n\n function onMessage(callback) {\n on(window, 'message', 'onmessage', callback);\n }\n\n function offMessage(callback) {\n off(window, 'message', 'onmessage', callback);\n }\n\n /**\n * Parse the sig_request parameter, throwing errors if the token contains\n * a server error or if the token is invalid.\n *\n * @param {String} sig Request token\n */\n function parseSigRequest(sig) {\n if (!sig) {\n // nothing to do\n return;\n }\n\n // see if the token contains an error, throwing it if it does\n if (sig.indexOf('ERR|') === 0) {\n throwError(sig.split('|')[1]);\n }\n\n // validate the token\n if (sig.indexOf(':') === -1 || sig.split(':').length !== 2) {\n throwError(\n 'Duo was given a bad token. This might indicate a configuration ' +\n 'problem with one of Duo\\'s client libraries.'\n );\n }\n\n var sigParts = sig.split(':');\n\n // hang on to the token, and the parsed duo and app sigs\n sigRequest = sig;\n duoSig = sigParts[0];\n appSig = sigParts[1];\n\n return {\n sigRequest: sig,\n duoSig: sigParts[0],\n appSig: sigParts[1]\n };\n }\n\n /**\n * Validate that a MessageEvent came from the Duo service, and that it\n * is a properly formatted payload.\n *\n * The Google Chrome sign-in page injects some JS into pages that also\n * make use of postMessage, so we need to do additional validation above\n * and beyond the origin.\n *\n * @param {MessageEvent} event Message received via postMessage\n */\n function isDuoMessage(event) {\n return Boolean(\n event.origin === ('https://' + host) &&\n typeof event.data === 'string' &&\n (\n event.data.match(DUO_MESSAGE_FORMAT) ||\n event.data.match(DUO_ERROR_FORMAT) ||\n event.data.match(DUO_OPEN_WINDOW_FORMAT)\n )\n );\n }\n\n /**\n * Validate the request token and prepare for the iframe to become ready.\n *\n * All options below can be passed into an options hash to `Duo.init`, or\n * specified on the iframe using `data-` attributes.\n *\n * Options specified using the options hash will take precedence over\n * `data-` attributes.\n *\n * Example using options hash:\n * ```javascript\n * Duo.init({\n * iframe: \"some_other_id\",\n * host: \"api-main.duo.test\",\n * sig_request: \"...\",\n * post_action: \"/auth\",\n * post_argument: \"resp\"\n * });\n * ```\n *\n * Example using `data-` attributes:\n * ```html\n * \n * ```\n *\n * Some browsers (especially embedded browsers) don't like it when the Duo\n * Web SDK changes the `src` attribute on the iframe. To prevent this, there\n * is an alternative way to use the Duo Web SDK:\n *\n * Add a div (or any other container element) instead of an iframe to the\n * DOM with an id of \"duo_iframe\", or pass that element to the\n * `iframeContainer` parameter of `Duo.init`. An iframe will be created and\n * inserted into that container element, preventing `src` change related\n * bugs. WARNING: All other elements in the container will be deleted.\n *\n * The `iframeAttributes` parameter of `Duo.init` is available to set any\n * attributes on the inserted iframe if the Duo Web SDK is inserting the\n * iframe. For details, see the parameter documentation below.\n *\n * @param {Object} options\n * @param {String} options.host - Hostname for the Duo Prompt.\n * @param {String} options.sig_request - Request token.\n * @param {String|HTMLElement} [options.iframe] - The iframe, or id of an\n * iframe that will be used for the Duo Prompt. If you don't provide\n * this or the `iframeContainer` parameter the Duo Web SDK will default\n * to using whatever element has an id of \"duo_iframe\".\n * @param {String|HTMLElement} [options.iframeContainer] - The element you\n * want the Duo Prompt inserted into, or the id of that element.\n * Anything inside this element will be deleted and replaced with an\n * iframe hosting the Duo prompt. If you don't provide this or the\n * `iframe` parameter the Duo Web SDK will default to using whatever\n * element has an id of \"duo_iframe\".\n * @param {Object} [options.iframeAttributes] - Object with names and\n * values coresponding to attributes you want added to the Duo Prompt\n * iframe, like `title`, `width` and `allow`. WARNING: this parameter\n * only works if you use the `iframeContainer` parameter or add an id\n * of \"duo_iframe\" to an element that isn't an iframe. If you have\n * added an iframe to the DOM yourself, you should set those attributes\n * directly on the iframe.\n * @param {String} [options.post_action=''] - URL to POST back to after a\n * successful auth.\n * @param {String} [options.post_argument='sig_response'] - Parameter name\n * to use for response token.\n * @param {Function} [options.submit_callback] - If provided, the Duo Web\n * SDK will not submit the form. Instead it will execute this callback\n * function passing in a reference to the \"duo_form\" form object.\n * `submit_callback`` can be used to prevent the webpage from reloading.\n */\n function init(options) {\n // If init() is called more than once we have to reset all the local\n // variables to ensure init() will work the same way every time. This\n // helps people making single page applications. SPAs may periodically\n // remove the iframe and add a new one that has to be initialized.\n initializeStatefulVariables();\n\n if (options) {\n if (options.host) {\n host = options.host;\n }\n\n if (options.sig_request) {\n parseSigRequest(options.sig_request);\n }\n\n if (options.post_action) {\n postAction = options.post_action;\n }\n\n if (options.post_argument) {\n postArgument = options.post_argument;\n }\n\n if (typeof options.submit_callback === 'function') {\n submitCallback = options.submit_callback;\n }\n }\n\n var promptElement = getPromptElement(options);\n if (promptElement) {\n // If we can get the element that will host the prompt, set it.\n ready(promptElement, options.iframeAttributes || {});\n } else {\n // If the element that will host the prompt isn't available yet, set\n // it up after the DOM finishes loading.\n asyncReady(options);\n }\n\n // always clean up after yourself!\n offReady(init);\n }\n\n /**\n * Given the options from init(), get the iframe or iframe container that\n * should be used for the Duo Prompt. Returns `null` if nothing was found.\n */\n function getPromptElement(options) {\n var result;\n\n if (options.iframe && options.iframeContainer) {\n throwError(\n 'Passing both `iframe` and `iframeContainer` arguments at the' +\n ' same time is not allowed.'\n );\n } else if (options.iframe) {\n // If we are getting an iframe, try to get it and raise if the\n // element we find is NOT an iframe.\n result = getUserDefinedElement(options.iframe);\n validateIframe(result);\n } else if (options.iframeContainer) {\n result = getUserDefinedElement(options.iframeContainer);\n validateIframeContainer(result);\n } else {\n result = document.getElementById('duo_iframe');\n }\n\n return result;\n }\n\n /**\n * When given an HTMLElement, return it. When given a string, get an element\n * with that id, else return null.\n */\n function getUserDefinedElement(object) {\n if (object.tagName) {\n return object;\n } else if (typeof object == 'string') {\n return document.getElementById(object);\n }\n return null;\n }\n\n /**\n * Check if the given thing is an iframe.\n */\n function isIframe(element) {\n return (\n element &&\n element.tagName &&\n element.tagName.toLowerCase() === 'iframe'\n );\n }\n\n /**\n * Throw an error if we are given an element that is NOT an iframe.\n */\n function validateIframe(element) {\n if (element && !isIframe(element)) {\n throwError(\n '`iframe` only accepts an iframe element or the id of an' +\n ' iframe. To use a non-iframe element, use the' +\n ' `iframeContainer` argument.'\n );\n }\n }\n\n /**\n * Throw an error if we are given an element that IS an iframe instead of an\n * element that we can insert an iframe into.\n */\n function validateIframeContainer(element) {\n if (element && isIframe(element)) {\n throwError(\n '`iframeContainer` only accepts a non-iframe element or the' +\n ' id of a non-iframe. To use a non-iframe element, use the' +\n ' `iframeContainer` argument on Duo.init().'\n );\n }\n }\n\n /**\n * Generate the URL that goes to the Duo Prompt.\n */\n function generateIframeSrc() {\n return [\n 'https://', host, '/frame/web/v1/auth?tx=', duoSig,\n '&parent=', encodeURIComponent(document.location.href),\n '&v=2.8'\n ].join('');\n }\n\n /**\n * This function is called when a message was received from another domain\n * using the `postMessage` API. Check that the event came from the Duo\n * service domain, and that the message is a properly formatted payload,\n * then perform the post back to the primary service.\n *\n * @param event Event object (contains origin and data)\n */\n function onReceivedMessage(event) {\n if (isDuoMessage(event)) {\n if (event.data.match(DUO_OPEN_WINDOW_FORMAT)) {\n var url = event.data.substring(\"DUO_OPEN_WINDOW|\".length);\n if (isValidUrlToOpen(url)) {\n // Open the URL that comes after the DUO_WINDOW_OPEN token.\n window.open(url, \"_self\");\n }\n }\n else {\n // the event came from duo, do the post back\n doPostBack(event.data);\n\n // always clean up after yourself!\n offMessage(onReceivedMessage);\n }\n }\n }\n\n /**\n * Validate that this passed in URL is one that we will actually allow to\n * be opened.\n * @param url String URL that the message poster wants to open\n * @returns {boolean} true if we allow this url to be opened in the window\n */\n function isValidUrlToOpen(url) {\n if (!url) {\n return false;\n }\n\n var parser = document.createElement('a');\n parser.href = url;\n\n if (parser.protocol === \"duotrustedendpoints:\") {\n return true;\n } else if (parser.protocol !== \"https:\") {\n return false;\n }\n\n for (var i = 0; i < VALID_OPEN_WINDOW_DOMAINS.length; i++) {\n if (parser.hostname.endsWith(\".\" + VALID_OPEN_WINDOW_DOMAINS[i]) ||\n parser.hostname === VALID_OPEN_WINDOW_DOMAINS[i]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Register a callback to call ready() after the DOM has loaded.\n */\n function asyncReady(options) {\n var callback = function() {\n var promptElement = getPromptElement(options);\n if (!promptElement) {\n throwError(\n 'This page does not contain an iframe for Duo to use.' +\n ' Add an element like' +\n ' to this page.'\n );\n }\n\n ready(promptElement, options.iframeAttributes || {});\n\n // Always clean up after yourself.\n offReady(callback)\n };\n\n onReady(callback);\n }\n\n /**\n * Point the iframe at Duo, then wait for it to postMessage back to us.\n */\n function ready(promptElement, iframeAttributes) {\n if (!host) {\n host = getDataAttribute(promptElement, 'host');\n\n if (!host) {\n throwError(\n 'No API hostname is given for Duo to use. Be sure to pass ' +\n 'a `host` parameter to Duo.init, or through the `data-host` ' +\n 'attribute on the iframe element.'\n );\n }\n }\n\n if (!duoSig || !appSig) {\n parseSigRequest(getDataAttribute(promptElement, 'sigRequest'));\n\n if (!duoSig || !appSig) {\n throwError(\n 'No valid signed request is given. Be sure to give the ' +\n '`sig_request` parameter to Duo.init, or use the ' +\n '`data-sig-request` attribute on the iframe element.'\n );\n }\n }\n\n // if postAction/Argument are defaults, see if they are specified\n // as data attributes on the iframe\n if (postAction === '') {\n postAction = getDataAttribute(promptElement, 'postAction') || postAction;\n }\n\n if (postArgument === 'sig_response') {\n postArgument = getDataAttribute(promptElement, 'postArgument') || postArgument;\n }\n\n if (isIframe(promptElement)) {\n iframe = promptElement;\n iframe.src = generateIframeSrc();\n } else {\n // If given a container to put an iframe in, clean out any children\n // child elements in case `init()` was called more than once.\n while (promptElement.firstChild) {\n // We call `removeChild()` instead of doing `innerHTML = \"\"`\n // to make sure we unbind any events.\n promptElement.removeChild(promptElement.firstChild)\n }\n\n iframe = document.createElement('iframe');\n\n // Set the src and all other attributes on the new iframe.\n iframeAttributes['src'] = generateIframeSrc();\n for (var name in iframeAttributes) {\n iframe.setAttribute(name, iframeAttributes[name]);\n }\n\n promptElement.appendChild(iframe);\n }\n\n // listen for the 'message' event\n onMessage(onReceivedMessage);\n }\n\n /**\n * We received a postMessage from Duo. POST back to the primary service\n * with the response token, and any additional user-supplied parameters\n * given in form#duo_form.\n */\n // function doPostBack(response) {\n // // create a hidden input to contain the response token\n // var input = document.createElement('input');\n // input.type = 'hidden';\n // input.name = postArgument;\n // input.value = response + ':' + appSig;\n\n // // user may supply their own form with additional inputs\n // var form = document.getElementById('duo_form');\n\n // // if the form doesn't exist, create one\n // if (!form) {\n // form = document.createElement('form');\n\n // // insert the new form after the iframe\n // iframe.parentElement.insertBefore(form, iframe.nextSibling);\n // }\n\n // // make sure we are actually posting to the right place\n // form.method = 'POST';\n // form.action = postAction;\n\n // // add the response token input to the form\n // form.appendChild(input);\n\n // // away we go!\n // if (typeof submitCallback === \"function\") {\n // submitCallback.call(null, form);\n // } else {\n // form.submit();\n // }\n // }\n\n // OKTA: Overriding their doPostBack logic because we want to submit this\n // through ajax, not a postBack\n function doPostBack(response) {\n postAction(response + ':' + appSig);\n }\n \n\n return {\n init: init,\n _onReady: onReady,\n _parseSigRequest: parseSigRequest,\n _isDuoMessage: isDuoMessage,\n _doPostBack: doPostBack\n };\n}));","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint camelcase: 0*/\nimport { $, _, loc } from '@okta/courage';\nimport Duo from '@okta/duo';\nimport Q from 'q';\nimport FormController from 'v1/util/FormController';\nimport Footer from 'v1/views/enroll-factors/Footer';\nexport default FormController.extend({\n className: 'enroll-duo duo-form',\n\n Model: {\n props: {\n host: 'string',\n signature: 'string',\n postAction: 'string',\n factorId: 'string',\n stateToken: 'string',\n },\n\n getInitOptions: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'web',\n provider: 'DUO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function(signedResponse) {\n const url = this.get('postAction');\n const factorId = this.get('factorId');\n const self = this;\n const data = {\n id: factorId,\n stateToken: this.get('stateToken'),\n sig_response: signedResponse,\n };\n // Note: We should be doing this in OktaAuth! Fix when it's updated.\n\n // We don't actually use authClient.post() here (unlike all the other cases in the\n // sign-in widget) since the endpoint is wired to accept serialized form post instead\n // of a JSON post ($.post() is different from authClient.post() in that in $.post(),\n // jquery decides the Content-Type instead of it being a JSON type). Enroll/Verify DUO\n // are the only two places where we actually do this.\n // NOTE - If we ever decide to change this, we should test this very carefully.\n return Q($.post(url, data))\n .then(function() {\n return self.doTransaction(function(transaction) {\n return transaction.poll();\n });\n })\n .catch(function(err) {\n self.trigger('error', self, err.xhr);\n });\n },\n },\n\n Form: {\n autoSave: true,\n noButtonBar: true,\n title: _.partial(loc, 'enroll.duo.title', 'login'),\n\n postRender: function() {\n this.add('');\n Duo.init({\n host: this.model.get('host'),\n sig_request: this.model.get('signature'),\n iframe: this.$('iframe').get(0),\n post_action: _.bind(this.model.activate, this.model),\n });\n },\n },\n\n Footer: Footer,\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model.getInitOptions(this.options.appState).then(function(trans) {\n const res = trans.data;\n\n if (\n !res ||\n !res._embedded ||\n !res._embedded.factor ||\n !res._embedded.factor._embedded ||\n !res._embedded.factor._embedded.activation\n ) {\n throw new Error('Response does not have duo activation options');\n }\n\n const factor = res._embedded.factor;\n const activation = factor._embedded.activation;\n\n self.model.set({\n host: activation.host,\n signature: activation.signature,\n postAction: activation._links.complete.href,\n factorId: factor.id,\n stateToken: res.stateToken,\n });\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\n\nconst Model = {\n local: {\n factorType: 'string',\n provider: 'string',\n },\n save: function() {\n this.trigger('save');\n const factorOpt = this.pick('factorType', 'provider');\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, factorOpt);\n\n return factor.enroll();\n });\n },\n};\n\nconst Form = function() {\n return {\n title: _.partial(loc, 'email.enroll.title', 'login'),\n noButtonBar: false,\n autoSave: true,\n save: _.partial(loc, 'email.button.send', 'login'),\n formChildren: [\n FormType.View({\n View: View.extend({\n attributes: {\n 'data-se': 'enroll-email-content',\n },\n template: hbs('{{i18n code=\"email.enroll.description\" bundle=\"login\"}}'),\n }),\n }),\n ],\n };\n};\n\nexport default FormController.extend({\n className: 'enroll-email',\n\n Model: Model,\n\n Form: Form,\n\n Footer: Footer,\n\n initialize: function() {\n this.model.set(_.pick(this.options, 'factorType', 'provider'));\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nexport default FormController.extend({\n className: 'enroll-hotp',\n Model: function() {\n return {\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n };\n },\n Form: {\n title: function() {\n const factors = this.options.appState.get('factors');\n const hotpFactor = factors.findWhere({\n provider: this.model.get('__provider__'),\n factorType: this.model.get('__factorType__'),\n });\n return loc('enroll.totp.title', 'login', [hotpFactor.get('factorLabel')]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'restrict-enroll' },\n\n formChildren: function() {\n const children = [\n FormType.View({\n View: new HtmlErrorMessageView({ message: loc('enroll.hotp.restricted', 'login') }),\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\n\nfunction isRSA(provider) {\n return provider === 'RSA';\n}\n\nfunction getClassName(provider) {\n return isRSA(provider) ? 'enroll-rsa' : 'enroll-onprem';\n}\n\nexport default FormController.extend({\n className: function() {\n return getClassName(this.options.provider);\n },\n Model: function() {\n const provider = this.options.provider;\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere(_.pick(this.options, 'provider', 'factorType'));\n const profile = factor.get('profile');\n const credentialId = profile && profile.credentialId ? profile.credentialId : '';\n\n return {\n props: {\n credentialId: ['string', true, credentialId],\n passCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token',\n provider: provider,\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n profile: { credentialId: this.get('credentialId') },\n });\n });\n },\n };\n },\n\n Form: function() {\n const provider = this.options.provider;\n const factors = this.options.appState.get('factors');\n const factor = factors.findWhere(_.pick(this.options, 'provider', 'factorType'));\n const vendorName = factor.get('vendorName');\n const title = isRSA(provider) ? loc('factor.totpHard.rsaSecurId', 'login') : vendorName;\n\n return {\n title: title,\n noButtonBar: true,\n autoSave: true,\n className: getClassName(provider),\n initialize: function() {\n this.listenTo(this.model, 'error', (source, error) => {\n if (error && error.status === 409) {\n // 409 means we are in change pin, so we should clear out answer input\n this.$('.o-form-input-name-passCode input').val('');\n this.$('.o-form-input-name-passCode input').trigger('change');\n this.$('.o-form-input-name-passCode input').focus();\n }\n });\n },\n formChildren: [\n FormType.Input({\n label: loc('enroll.onprem.username.placeholder', 'login', [vendorName]),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.onprem.username.tooltip',\n 'enroll.onprem.username.placeholder',\n 'login',\n [vendorName],\n [vendorName]\n ),\n 'explain-top': true,\n name: 'credentialId',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.onprem.passcode.placeholder', 'login', [vendorName]),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.onprem.passcode.tooltip',\n 'enroll.onprem.passcode.placeholder',\n 'login',\n [vendorName],\n [vendorName]\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'password',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n }),\n ],\n };\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { loc } from '@okta/courage';\nconst fn = {};\n\n// Validate the 'username' field on the model.\nfn.validateUsername = function(model) {\n const username = model.get('username');\n\n if (username && username.length > 256) {\n return {\n username: loc('model.validation.field.username', 'login'),\n };\n }\n};\n\n// Validate that the field1 and field2 fields on the model are a match.\nfn.validateFieldsMatch = function(model, field1, field2, message) {\n if (model.get(field1) !== model.get(field2)) {\n const ret = {};\n\n ret[field2] = message;\n return ret;\n }\n};\n\n// Validate that the 'newPassword' and 'confirmPassword' fields on the model are a match.\nfn.validatePasswordMatch = function(model) {\n return fn.validateFieldsMatch(model, 'newPassword', 'confirmPassword', loc('password.error.match', 'login'));\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-password',\n Model: {\n props: {\n password: ['string', true],\n confirmPassword: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateFieldsMatch(\n this,\n 'password',\n 'confirmPassword',\n loc('password.enroll.error.match', 'login')\n );\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'password',\n provider: 'OKTA',\n });\n\n return factor.enroll({\n profile: {\n password: this.get('password'),\n },\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n title: _.partial(loc, 'enroll.password.setup', 'login'),\n inputs: function() {\n return [\n {\n label: loc('mfa.challenge.password.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'password',\n input: TextBox,\n type: 'password',\n },\n {\n label: loc('password.confirmPassword.placeholder', 'login'),\n 'label-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'confirmPassword',\n input: TextBox,\n type: 'password',\n },\n ];\n },\n },\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-question',\n Model: {\n props: {\n question: 'string',\n answer: ['string', true],\n },\n local: {\n securityQuestions: 'object',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'question',\n provider: 'OKTA',\n });\n\n return factor.enroll({\n profile: {\n question: this.get('question'),\n answer: this.get('answer'),\n },\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n title: _.partial(loc, 'enroll.securityQuestion.setup', 'login'),\n inputs: function() {\n return [\n {\n label: false,\n 'label-top': true,\n name: 'question',\n type: 'select',\n wide: true,\n options: function() {\n return this.model.get('securityQuestions');\n },\n params: {\n searchThreshold: 25,\n },\n },\n {\n label: loc('mfa.challenge.answer.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain('mfa.challenge.answer.tooltip', 'mfa.challenge.answer.placeholder', 'login'),\n 'explain-top': true,\n className: 'o-form-fieldset o-form-label-top auth-passcode',\n name: 'answer',\n input: TextBox,\n type: 'text',\n },\n ];\n },\n },\n\n Footer: Footer,\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model\n .manageTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'question',\n provider: 'OKTA',\n });\n\n return factor.questions();\n })\n .then(function(questionsRes) {\n const questions = {};\n\n _.each(questionsRes, function(question) {\n questions[question.question] = FactorUtil.getSecurityQuestionLabel(question);\n });\n self.model.set('securityQuestions', questions);\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-symantec',\n Model: {\n props: {\n credentialId: ['string', true],\n passCode: ['string', true],\n nextPassCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token',\n provider: 'SYMANTEC',\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n nextPassCode: this.get('nextPassCode'),\n profile: { credentialId: this.get('credentialId') },\n });\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'factor.totpHard.symantecVip', 'login'),\n subtitle: _.partial(loc, 'enroll.symantecVip.subtitle', 'login'),\n noButtonBar: true,\n autoSave: true,\n className: 'enroll-symantec',\n formChildren: function() {\n return [\n FormType.Input({\n label: loc('enroll.symantecVip.credentialId.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.credentialId.tooltip',\n 'enroll.symantecVip.credentialId.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'credentialId',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.symantecVip.passcode1.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.passcode1.tooltip',\n 'enroll.symantecVip.passcode1.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'passCode',\n input: TextBox,\n type: 'text',\n }),\n FormType.Input({\n label: loc('enroll.symantecVip.passcode2.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'enroll.symantecVip.passcode2.tooltip',\n 'enroll.symantecVip.passcode2.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'nextPassCode',\n input: TextBox,\n type: 'text',\n }),\n FormType.Toolbar({\n noCancelButton: true,\n save: loc('mfa.challenge.verify', 'login'),\n }),\n ];\n },\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport default {\n OKTA: {\n APPLE: 'https://itunes.apple.com/us/app/okta-verify/id490179405',\n ANDROID: 'https://play.google.com/store/apps/details?id=com.okta.android.auth',\n },\n GOOGLE: {\n APPLE: 'https://itunes.apple.com/us/app/google-authenticator/id388497605',\n ANDROID: 'https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2',\n },\n STORE: {\n APPLE: 'App Store',\n ANDROID: 'Google Play Store',\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport StoreLinks from 'v1/util/StoreLinks';\nimport Footer from 'v1/views/enroll-factors/Footer';\nconst showWhenDeviceTypeSelected = {\n __deviceType__: function(val) {\n return val !== undefined;\n },\n};\nconst EnrollTotpControllerAppDownloadInstructionsView = View.extend({\n attributes: { 'data-se': 'app-download-instructions' },\n className: 'app-download-instructions',\n template: hbs(\n '\\\n \\\n

            {{{appStoreLinkText}}}

            \\\n '\n ),\n initialize: function() {\n this.listenTo(this.model, 'change:__deviceType__', this.render);\n },\n postRender: function() {\n const link = this.$el.find('.instructions a');\n if (link.length) {\n link[0].setAttribute('target', '_blank');\n link[0].setAttribute('rel', 'noreferer noopener');\n }\n },\n getTemplateData: function() {\n let appStoreLink;\n let appIcon;\n let appStoreName;\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n appStoreName = StoreLinks.STORE[this.model.get('__deviceType__')];\n if (this.model.get('__provider__') === 'GOOGLE') {\n appStoreLink = StoreLinks.GOOGLE[this.model.get('__deviceType__')];\n appIcon = 'google-auth-38';\n } else {\n appStoreLink = StoreLinks.OKTA[this.model.get('__deviceType__')];\n appIcon = 'okta-verify-download-icon';\n }\n return {\n appStoreLinkText: loc('enroll.totp.downloadApp', 'login', [appStoreLink, factorName, appStoreName]),\n appIcon: appIcon,\n };\n },\n});\nconst EnrollTotpControllerEnrollTotpController = FormController.extend({\n className: 'enroll-totp',\n Model: function() {\n return {\n local: {\n __deviceType__: 'string',\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: this.get('__factorType__'),\n provider: this.get('__provider__'),\n });\n\n return factor.enroll();\n });\n },\n };\n },\n\n Form: {\n title: function() {\n const factorName = FactorUtil.getFactorLabel(this.model.get('__provider__'), this.model.get('__factorType__'));\n\n return loc('enroll.totp.title', 'login', [factorName]);\n },\n noButtonBar: true,\n attributes: { 'data-se': 'step-device-type' },\n\n formChildren: function() {\n const inputOptions = {\n APPLE: loc('iphone', 'login'),\n ANDROID: loc('android', 'login'),\n };\n const children = [\n FormType.Input({\n name: '__deviceType__',\n type: 'radio',\n options: inputOptions,\n group: true,\n label: _.partial(loc, 'enroll.totp.selectDevice', 'login'),\n }),\n FormType.Divider({ showWhen: showWhenDeviceTypeSelected }),\n FormType.View({\n View: EnrollTotpControllerAppDownloadInstructionsView,\n showWhen: showWhenDeviceTypeSelected,\n }),\n FormType.Button({\n title: loc('oform.next', 'login'),\n attributes: {\n 'data-type': 'save'\n },\n className: 'button button-primary default-custom-button',\n click: function() {\n this.model.save();\n },\n showWhen: showWhenDeviceTypeSelected,\n }),\n ];\n\n return children;\n },\n },\n\n Footer: Footer,\n});\nexport default EnrollTotpControllerEnrollTotpController;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity:[2, 9] */\n\nimport { loc } from '@okta/courage';\nconst fn = {};\n\nfn.getU2fEnrollErrorMessageKeyByCode = function(errorCode) {\n switch (errorCode) {\n default:\n case 1:\n return 'u2f.error.other';\n case 2:\n case 3:\n return 'u2f.error.badRequest';\n case 4:\n return 'u2f.error.unsupported';\n case 5:\n return 'u2f.error.timeout';\n }\n};\n\nfn.getU2fVerifyErrorMessageKeyByCode = function(errorCode, isOneFactor) {\n switch (errorCode) {\n case 1:\n // OTHER_ERROR\n return isOneFactor ? 'u2f.error.other.oneFactor' : 'u2f.error.other';\n case 2: // BAD_REQUEST\n case 3:\n // CONFIGURATION_UNSUPPORTED\n return isOneFactor ? 'u2f.error.badRequest.oneFactor' : 'u2f.error.badRequest';\n case 4:\n // DEVICE_INELIGIBLE\n return isOneFactor ? 'u2f.error.unsupported.oneFactor' : 'u2f.error.unsupported';\n case 5:\n // TIMEOUT\n return 'u2f.error.timeout';\n }\n};\n\nfn.getU2fEnrollErrorMessageByCode = function(errorCode) {\n return loc(fn.getU2fEnrollErrorMessageKeyByCode(errorCode), 'login');\n};\n\nfn.getU2fVerifyErrorMessageByCode = function(errorCode, isOneFactor) {\n return loc(fn.getU2fVerifyErrorMessageKeyByCode(errorCode, isOneFactor), 'login');\n};\n\nfn.getU2fVersion = function() {\n return 'U2F_V2';\n};\n\nfn.isU2fAvailable = function() {\n return Object.prototype.hasOwnProperty.call(window, 'u2f');\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global u2f */\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Q from 'q';\nimport 'u2f-api-polyfill';\nimport { U2FError } from 'util/Errors';\nimport FidoUtil from 'util/FidoUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nexport default FormController.extend({\n className: 'enroll-u2f',\n Model: {\n local: {\n __enrolled__: 'boolean',\n },\n\n save: function() {\n this.trigger('request');\n\n if (this.get('__enrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'u2f',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function() {\n this.set('__enrolled__', true);\n this.trigger('errors:clear');\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n const appId = activation.appId;\n const registerRequests = [\n {\n version: FidoUtil.getU2fVersion(),\n challenge: activation.nonce,\n },\n ];\n const self = this;\n const deferred = Q.defer();\n\n u2f.register(appId, registerRequests, [], function(data) {\n self.trigger('errors:clear');\n if (data.errorCode && data.errorCode !== 0) {\n deferred.reject(\n new U2FError({\n xhr: {\n responseJSON: {\n errorSummary: FidoUtil.getU2fEnrollErrorMessageByCode(data.errorCode),\n },\n },\n })\n );\n } else {\n deferred.resolve(\n transaction.activate({\n registrationData: data.registrationData,\n version: data.version,\n challenge: data.challenge,\n clientData: data.clientData,\n })\n );\n }\n });\n return deferred.promise;\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.u2f.title', 'login'),\n save: _.partial(loc, 'enroll.u2f.save', 'login'),\n noCancelButton: true,\n hasSavingState: false,\n autoSave: true,\n className: 'enroll-u2f-form',\n noButtonBar: function() {\n return !FidoUtil.isU2fAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n formChildren: function() {\n const result = [];\n\n if (!FidoUtil.isU2fAvailable()) {\n let errorMessageKey = 'u2f.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'u2f.error.factorNotSupported.oneFactor';\n }\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n } else {\n //There is html in enroll.u2f.general2 in our properties file, reason why is unescaped\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '
              \\\n
            1. {{{i18n code=\"enroll.u2f.general2\" bundle=\"login\"}}}
            2. \\\n
            3. {{i18n code=\"enroll.u2f.general3\" bundle=\"login\"}}
            4. \\\n
            '\n ),\n }),\n })\n );\n\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
            \\\n

            {{i18n code=\"enroll.u2f.instructions\" bundle=\"login\"}}

            \\\n

            {{i18n code=\"enroll.u2f.instructionsBluetooth\" bundle=\"login\"}}

            \\\n
            \\\n
            \\\n
            \\\n
            \\\n
            \\\n
            '\n ),\n }),\n })\n );\n }\n\n return result;\n },\n\n _startEnrollment: function() {\n this.$('.u2f-instructions').addClass('hide');\n this.$('.u2f-enroll-text').removeClass('hide');\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.u2f-instructions').removeClass('hide');\n this.$('.u2f-enroll-text').addClass('hide');\n this.$('.o-form-button-bar').show();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the 'License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport BaseLoginModel from './BaseLoginModel';\nexport default BaseLoginModel.extend({\n initialize: function(options) {\n this.options = options || {};\n this.appState = this.options.appState;\n },\n constructPostData: function(profileAttributes) {\n const postData = {\n registration: {\n profile: profileAttributes,\n },\n };\n\n // send createNewAccount flag for new user creation\n if (this.appState.get('policy').registration.createNewAccount) {\n postData.registration['createNewAccount'] = true;\n }\n return postData;\n },\n getEnrollFormData: function() {\n return this.manageTransaction(function(transaction, setTransaction) {\n return transaction.enroll().then(function(trans) {\n setTransaction(trans);\n });\n });\n },\n save: function() {\n let data = BaseLoginModel.prototype.toJSON.apply(this, arguments);\n\n data = _.omit(data, ['appState', 'settings', 'createNewAccount']);\n if (_.isEmpty(data)) {\n const error = {\n errorSummary: loc('oform.errorbanner.title', 'login'),\n };\n\n this.trigger('error', this, {\n responseJSON: error,\n });\n } else {\n return this.manageTransaction(function(transaction, setTransaction) {\n transaction.enroll(this.constructPostData(data)).then(function(trans) {\n setTransaction(trans);\n });\n });\n }\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, internal } from '@okta/courage';\nlet { BaseSchema } = internal.models;\nexport default BaseSchema.Model.extend({\n expand: ['schema'],\n setFieldPlaceholder: function(formFields) {\n _.each(formFields, function(formField) {\n formField.title = formField.label;\n });\n return formFields;\n },\n initialize: function(options) {\n let profileAttributes = options.profileSchemaAttributes;\n\n profileAttributes = this.setFieldPlaceholder(profileAttributes);\n if (profileAttributes) {\n const userProfileSchema = {\n properties: {},\n };\n\n for (var i = 0; i < profileAttributes.length; i++) {\n const profileAttributeObject = profileAttributes[i];\n\n userProfileSchema.properties[profileAttributeObject.name] = profileAttributeObject;\n }\n this.parse.apply(this, [{ schema: userProfileSchema }]);\n }\n },\n});\n","/* eslint max-statements: [2, 23], max-depth: [2, 3], complexity: [2, 13] */\n/*!\n * Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, internal, $ } from '@okta/courage';\nimport TextBox from 'v1/views/shared/TextBox';\nlet { SchemaFormFactory } = internal.views.forms.helpers;\n\nconst getParts = function(username) {\n const usernameArr = username.split('');\n const minPartsLength = 3;\n const userNameParts = [];\n const delimiters = [',', '.', '-', '_', '#', '@'];\n let userNamePart = '';\n\n _.each(usernameArr, function(part) {\n if (delimiters.indexOf(part) === -1) {\n userNamePart += part;\n } else {\n if (userNamePart.length >= minPartsLength) {\n userNameParts.push(_.clone(userNamePart));\n }\n userNamePart = '';\n }\n });\n if (userNamePart.length >= minPartsLength) {\n userNameParts.push(_.clone(userNamePart));\n }\n return userNameParts.filter(Boolean);\n};\n\nconst passwordContainsFormField = function(formField, password) {\n if (!formField) {\n return false;\n }\n formField = formField.toLowerCase();\n password = password.toLowerCase();\n const formFieldArr = getParts(formField);\n\n //check if each formField part contains password\n for (var i = 0; i < formFieldArr.length; i++) {\n const formFieldPart = formFieldArr[i];\n\n if (password.indexOf(formFieldPart) !== -1) {\n return true;\n }\n }\n return false;\n};\n\nconst checkSubSchema = function(subSchema, value, model) {\n const minLength = subSchema.get('minLength');\n const maxLength = subSchema.get('maxLength');\n const regex = subSchema.get('format');\n\n if (_.isNumber(minLength)) {\n if (value.length < minLength) {\n return false;\n }\n }\n\n if (_.isNumber(maxLength)) {\n if (value.length > maxLength) {\n return false;\n }\n }\n const password = value;\n\n if (_.isString(regex)) {\n // call passwordContainsFormField if regex is userName, firstName, lastName\n if (regex === '^[#/userName]' || regex === '^[#/firstName]' || regex === '^[#/lastName]') {\n const fieldName = regex.split('^[#/')[1].split(']')[0];\n let fieldValue = model.get(fieldName);\n\n if (fieldName === 'userName') {\n // with email as login enabled, we only have email populated\n // Therefore we fallback and run validation with email attribute.\n fieldValue = model.has('userName') ? model.get('userName') : model.get('email');\n }\n return !passwordContainsFormField(fieldValue, password);\n } else {\n if (!new RegExp(regex).test(value)) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nconst checkSubSchemas = function(fieldName, model, subSchemas, showError) {\n const value = model.get(fieldName);\n\n if (!_.isString(value)) {\n return;\n }\n\n subSchemas.each(function(subSchema, index) {\n const ele = $('#subschemas-' + fieldName + ' .subschema-' + index);\n\n //hide password complexity if no password\n if (value) {\n ele.children('p').removeClass('default-schema');\n } else {\n ele.children('p').addClass('default-schema');\n }\n\n // clear aria role and live-region for re-validation\n ele.children('p')\n .removeAttr('role')\n .removeAttr('aria-live');\n\n // reset errors\n ele.removeClass('subschema-satisfied subschema-unsatisfied subschema-error');\n\n // validate\n if (checkSubSchema(subSchema, value, model)) {\n // passed\n ele.addClass('subschema-satisfied');\n ele.find('p span').removeClass('error error-16-small');\n ele.find('p span').addClass('confirm-16');\n } else {\n // failed\n if (showError) {\n ele.find('p span').removeClass('confirm-16');\n ele.find('p span').addClass('error error-16-small');\n ele.addClass('subschema-error subschema-unsatisfied');\n\n ele.find('p')\n // set role=\"alert\" so the password requirement is read by\n // screen-readers\n .attr('role', 'alert')\n // set aria-live=\"polite\" so it will \"debounce\" and wait to read the\n // message between keystrokes\n .attr('aria-live', 'polite');\n }\n }\n });\n};\n\nconst fnCreateInputOptions = function(schemaProperty) {\n let inputOptions = SchemaFormFactory.createInputOptions(schemaProperty);\n\n if (inputOptions.type === 'select') {\n inputOptions = _.extend(inputOptions, {\n label: schemaProperty.get('title'),\n });\n } else {\n let placeholder = schemaProperty.get('title');\n\n if (schemaProperty.get('required')) {\n placeholder += ' *';\n }\n inputOptions = _.extend(inputOptions, {\n label: false,\n 'label-top': true,\n placeholder: placeholder,\n });\n }\n\n const fieldName = schemaProperty.get('name');\n\n switch (fieldName) {\n case 'userName':\n inputOptions.input = TextBox;\n inputOptions.params = {\n icon: 'person-16-gray',\n };\n break;\n case 'password':\n inputOptions.type = 'password';\n inputOptions.input = TextBox;\n inputOptions.params = {\n icon: 'remote-lock-16',\n };\n }\n\n const subSchemas = schemaProperty.get('subSchemas');\n\n if (subSchemas) {\n inputOptions.events = {\n input: function() {\n checkSubSchemas(fieldName, this.model, subSchemas, true);\n },\n focusout: function() {\n checkSubSchemas(fieldName, this.model, subSchemas, true);\n },\n 'change:userName': function() {\n checkSubSchemas(fieldName, this.model, subSchemas, true);\n },\n 'change:firstName': function() {\n checkSubSchemas(fieldName, this.model, subSchemas, true);\n },\n 'change:lastName': function() {\n checkSubSchemas(fieldName, this.model, subSchemas, true);\n },\n 'change:email': function() {\n checkSubSchemas(fieldName, this.model, subSchemas, true);\n },\n };\n }\n\n return inputOptions;\n};\n\nexport default {\n createInputOptions: fnCreateInputOptions,\n getUsernameParts: getParts,\n passwordContainsFormField: passwordContainsFormField,\n};\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-len: [2, 130] */\nimport { Form, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport ProfileSchema from 'v1/models/ProfileSchema';\nimport RegistrationFormFactory from 'v1/util/RegistrationFormFactory';\nexport default Form.extend({\n layout: 'o-form-theme',\n autoSave: true,\n noCancelButton: true,\n title() {\n return loc('registration.form.title', 'login');\n },\n save() {\n return loc('registration.form.submit', 'login');\n },\n initialize: function(options) {\n this.options = options || {};\n this.schema = new ProfileSchema({\n profileSchemaAttributes: this.options.appState.get('policy').registration.profile,\n });\n this.schema.properties.each(schemaProperty => {\n const inputOptions = RegistrationFormFactory.createInputOptions(schemaProperty);\n\n this.addInput(inputOptions);\n });\n const requiredFieldsLabel = hbs('{{label}}')({\n label: loc('registration.required.fields.label', 'login'),\n });\n\n this.add(requiredFieldsLabel);\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .help': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n }\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport EnrollUser from 'v1/models/EnrollUser';\nimport BaseLoginController from 'v1/util/BaseLoginController';\nimport EnrollUserForm from 'v1/views/enrollUser/EnrollUserForm';\nimport FooterWithBackLink from 'v1/views/shared/FooterWithBackLink';\nexport default BaseLoginController.extend({\n className: 'enroll-user',\n initialize: function(options) {\n this.options = options || {};\n // create model\n this.model = new EnrollUser(this.options);\n },\n fetchInitialData: function() {\n // If user is unauthenticated and starts enroll flow make a post call to transition state to PROFILE_REQUIRED\n if (this.options.appState.get('isUnauthenticated')) {\n return this.model.getEnrollFormData();\n } else {\n return BaseLoginController.prototype.fetchInitialData.call();\n }\n },\n trapAuthResponse: function() {\n if (this.options.appState.get('isProfileRequired')) {\n return true;\n }\n },\n postRender: function() {\n const form = new EnrollUserForm(this.toJSON());\n\n this.add(form);\n this.add(new FooterWithBackLink(this.toJSON()));\n this.addListeners();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global Uint8Array, atob, btoa */\n\nconst fn = {};\n\n/**\n * Light weight hashing algorithm that hashes string into an integer between 0 and 4294967295\n * Not recommended for data set of size greater than 10000\n * https://www.npmjs.com/package/string-hash\n *\n * @param str the string to be hashed\n * @returns string hash of integer type\n */\nfn.getStringHash = function(str) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0;\n};\n\n/**\n * Converts any url safe characters in a base64 string to regular base64 characters\n * @param str base64 string that might contain url safe characters\n * @returns base64 formatted string\n */\nfn.base64UrlSafeToBase64 = function(str) {\n return str.replace(new RegExp('_', 'g'), '/').replace(new RegExp('-', 'g'), '+');\n};\n\n/**\n * Converts an ArrayBuffer object that contains binary data to base64 encoded string\n * @param bin ArrayBuffer object\n * @returns base64 encoded string\n */\nfn.binToStr = function(bin) {\n return btoa(new Uint8Array(bin).reduce((s, byte) => s + String.fromCharCode(byte), ''));\n};\n\n/**\n * Converts base64 string to binary data view\n * @param str in base64 or base64UrlSafe format\n * @returns converted Uint8Array view of binary data\n */\nfn.strToBin = function(str) {\n return Uint8Array.from(atob(this.base64UrlSafeToBase64(str)), c => c.charCodeAt(0));\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Q from 'q';\nimport FidoUtil from 'util/FidoUtil';\n\nfunction adaptToOkta(promise) {\n return new Q(promise);\n}\n\nfunction makeCredential(accountInfo, cryptoParams, challenge) {\n cryptoParams = cryptoParams.map(function(param) {\n return { type: 'FIDO_2_0', algorithm: param.algorithm };\n });\n\n const promise = window.msCredentials.makeCredential(accountInfo, cryptoParams, challenge).then(function(cred) {\n return Object.freeze({\n credential: { id: cred.id },\n publicKey: JSON.parse(cred.publicKey),\n attestation: cred.attestation,\n });\n });\n\n return adaptToOkta(promise);\n}\n\nfunction getAssertion(challenge, allowList) {\n const accept = allowList.map(function(item) {\n return { type: 'FIDO_2_0', id: item.id };\n });\n const filters = { accept: accept };\n const promise = window.msCredentials.getAssertion(challenge, filters).then(function(attestation) {\n const signature = attestation.signature;\n\n return Object.freeze({\n credential: { id: attestation.id },\n clientData: signature.clientData,\n authenticatorData: signature.authnrData,\n signature: signature.signature,\n });\n });\n\n return adaptToOkta(promise);\n}\n\nfunction processWebAuthnResponse(inputFunction, context) {\n if (typeof inputFunction === 'undefined') {\n return null;\n }\n const responseValue = inputFunction.apply(context);\n if (responseValue === undefined || responseValue === null) {\n return null;\n }\n return JSON.stringify(responseValue);\n}\n\nexport default {\n makeCredential: makeCredential,\n getAssertion: getAssertion,\n processWebAuthnResponse: processWebAuthnResponse,\n isAvailable: function() {\n return Object.prototype.hasOwnProperty.call(window, 'msCredentials');\n },\n isNewApiAvailable: function() {\n // navigator.credentials is not supported in IE11\n // eslint-disable-next-line compat/compat\n return navigator && navigator.credentials && navigator.credentials.create;\n },\n isWebauthnOrU2fAvailable: function() {\n return this.isNewApiAvailable() || FidoUtil.isU2fAvailable();\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport CryptoUtil from 'util/CryptoUtil';\nimport { WebauthnAbortError, WebAuthnError } from 'util/Errors';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\n\nfunction getExcludeCredentials(credentials) {\n const excludeCredentials = [];\n\n _.each(credentials, function(credential) {\n excludeCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(credential.id),\n });\n });\n return excludeCredentials;\n}\n\nexport default FormController.extend({\n className: 'enroll-webauthn',\n Model: {\n local: {\n __enrolled__: 'boolean',\n },\n\n save: function() {\n this.trigger('request');\n\n if (this.get('__enrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n });\n },\n\n activate: function() {\n this.set('__enrolled__', true);\n this.trigger('errors:clear');\n this.appState.on('backToFactors', () => {\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n });\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n // enroll via browser webauthn js\n\n const self = this;\n\n if (webauthn.isNewApiAvailable()) {\n const options = _.extend({}, activation, {\n challenge: CryptoUtil.strToBin(activation.challenge),\n user: {\n id: CryptoUtil.strToBin(activation.user.id),\n name: activation.user.name,\n displayName: activation.user.displayName,\n },\n excludeCredentials: getExcludeCredentials(activation.excludeCredentials),\n });\n\n // AbortController is not supported in IE11\n if (typeof AbortController !== 'undefined') {\n self.webauthnAbortController = new AbortController();\n }\n return new Q(\n navigator.credentials.create({\n publicKey: options,\n signal: self.webauthnAbortController && self.webauthnAbortController.signal,\n })\n )\n .then(function(newCredential) {\n return transaction.activate({\n attestation: CryptoUtil.binToStr(newCredential.response.attestationObject),\n clientData: CryptoUtil.binToStr(newCredential.response.clientDataJSON),\n // example data: [\"nfc\", \"usb\"]\n transports: webauthn.processWebAuthnResponse(newCredential.response.getTransports,\n newCredential.response),\n // example data: {\"credProps\":{\"rk\":true}}\n clientExtensions: webauthn.processWebAuthnResponse(newCredential.getClientExtensionResults,\n newCredential)\n });\n })\n .catch(function(error) {\n self.trigger('errors:clear');\n // Do not display if it is abort error triggered by code when switching.\n // self.webauthnAbortController would be null if abort was triggered by code.\n if (!self.webauthnAbortController) {\n throw new WebauthnAbortError();\n } else {\n throw new WebAuthnError({\n xhr: { responseJSON: { errorSummary: error.message } },\n });\n }\n })\n .finally(function() {\n // unset webauthnAbortController on successful authentication or error\n self.webauthnAbortController = null;\n });\n }\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.webauthn.biometric.title', 'login'),\n save: _.partial(loc, 'enroll.webauthn.save', 'login'),\n noCancelButton: true,\n hasSavingState: false,\n autoSave: true,\n className: 'enroll-webauthn-form',\n noButtonBar: function() {\n return !webauthn.isNewApiAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n formChildren: function() {\n const children = [];\n\n if (webauthn.isNewApiAvailable()) {\n //enroll.webauthn.biometric.instructions.edge is unescaped because it contains html\n children.push(\n FormType.View({\n View: View.extend({\n className: 'webauthn-enroll-text',\n template: hbs(\n '\\\n
            \\\n

            {{i18n code=\"enroll.webauthn.biometric.instructions\" bundle=\"login\"}}

            \\\n
            \\\n {{#if isEdge}}\\\n
            \\\n

            {{{i18n code=\"enroll.webauthn.biometric.instructions.edge\" bundle=\"login\"}}}

            \\\n
            \\\n {{/if}}\\\n {{#if onlySupportsSecurityKey}}\\\n
            \\\n

            {{{i18n code=\"enroll.webauthn.instructions.noSupportForBiometric\" bundle=\"login\"}}}

            \\\n
            \\\n {{/if}}\\\n
            \\\n '\n ),\n getTemplateData: function() {\n return {\n isEdge: BrowserFeatures.isEdge(),\n onlySupportsSecurityKey: (BrowserFeatures.isFirefox() || BrowserFeatures.isSafari()) &&\n BrowserFeatures.isMac(),\n };\n },\n }),\n })\n );\n } else {\n let errorMessageKey = 'webauthn.biometric.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'webauthn.biometric.error.factorNotSupported.oneFactor';\n }\n children.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n return children;\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nexport default View.extend({\n className: 'okta-waiting-spinner',\n attributes: {\n 'data-se': 'o-form-okta-waiting-spinner',\n },\n modelEvents: {\n 'spinner:show': 'show',\n 'spinner:hide': 'hide',\n },\n\n initialize: function(options) {\n if (options && options.visible === false) {\n this.hide();\n }\n },\n\n show: function() {\n this.$el.removeClass('hide');\n },\n\n hide: function() {\n this.$el.addClass('hide');\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport Spinner from 'v1/views/shared/Spinner';\nexport default FormController.extend({\n className: 'enroll-windows-hello',\n Model: {\n local: {\n __isEnrolled__: 'boolean',\n },\n\n save: function() {\n if (!webauthn.isAvailable()) {\n return;\n }\n\n this.trigger('request');\n\n if (this.get('__isEnrolled__')) {\n return this.activate();\n }\n\n return this.doTransaction(function(transaction) {\n return this._enroll(transaction);\n });\n },\n\n _enroll: function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.enroll();\n },\n\n activate: function() {\n this.set('__isEnrolled__', true);\n\n return this.doTransaction(function(transaction) {\n const activation = transaction.factor.activation;\n const user = transaction.user;\n const model = this;\n const accountInfo = {\n rpDisplayName: activation.rpDisplayName,\n userDisplayName: user.profile.displayName,\n accountName: user.profile.login,\n userId: user.id,\n };\n const cryptoParams = [\n {\n algorithm: activation.algorithm,\n },\n ];\n const challenge = activation.nonce;\n\n return webauthn\n .makeCredential(accountInfo, cryptoParams, challenge)\n .then(function(creds) {\n return transaction.activate({\n credentialId: creds.credential.id,\n publicKey: creds.publicKey,\n attestation: null,\n });\n })\n .catch(function(error) {\n switch (error.message) {\n case 'AbortError':\n case 'NotFoundError':\n case 'NotSupportedError':\n model.trigger('abort', error.message);\n return transaction;\n }\n\n throw error;\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'enroll.windowsHello.title', 'login'),\n subtitle: function() {\n return webauthn.isAvailable() ? loc('enroll.windowsHello.subtitle', 'login') : '';\n },\n save: _.partial(loc, 'enroll.windowsHello.save', 'login'),\n\n customSavingState: {\n stop: 'abort',\n },\n\n modelEvents: function() {\n if (!webauthn.isAvailable()) {\n return {};\n }\n\n return {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n abort: '_stopEnrollment',\n };\n },\n\n noButtonBar: function() {\n return !webauthn.isAvailable();\n },\n\n formChildren: function() {\n const result = [];\n\n if (!webauthn.isAvailable()) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc('enroll.windowsHello.error.notWindows', 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n result.push(FormType.View({ View: new Spinner({ model: this.model, visible: false }) }));\n\n return result;\n },\n\n _startEnrollment: function() {\n this.subtitle = loc('enroll.windowsHello.subtitle.loading', 'login');\n\n this.model.trigger('spinner:show');\n this._resetErrorMessage();\n\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _stopEnrollment: function(errorMessage) {\n this.subtitle = loc('enroll.windowsHello.subtitle', 'login');\n\n this.model.trigger('spinner:hide');\n\n let message;\n\n switch (errorMessage) {\n case 'NotSupportedError':\n message = loc('enroll.windowsHello.error.notConfiguredHtml', 'login');\n break;\n }\n\n this._resetErrorMessage();\n\n if (message) {\n const messageView = new HtmlErrorMessageView({\n message: message,\n });\n\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(messageView, { selector: '.o-form-error-container' });\n this._errorMessageView = this.last();\n }\n\n this.render();\n this.$('.o-form-button-bar').removeClass('hide');\n },\n\n _resetErrorMessage: function() {\n this._errorMessageView && this._errorMessageView.remove();\n this._errorMessageView = undefined;\n this.clearErrors();\n },\n },\n\n Footer: Footer,\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaEnrollActivate')) {\n this.model.activate();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Footer from 'v1/views/enroll-factors/Footer';\nimport TextBox from 'v1/views/shared/TextBox';\nexport default FormController.extend({\n className: 'enroll-yubikey',\n Model: {\n props: {\n passCode: ['string', true],\n factorId: 'string',\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'token:hardware',\n provider: 'YUBICO',\n });\n\n return factor.enroll({\n passCode: this.get('passCode'),\n });\n });\n },\n },\n\n Form: {\n title: _.partial(loc, 'enroll.yubikey.title', 'login'),\n subtitle: _.partial(loc, 'enroll.yubikey.subtitle', 'login'),\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n autoSave: true,\n className: 'enroll-yubikey',\n formChildren: [\n FormType.View({\n View: '
            ',\n }),\n FormType.Input({\n name: 'passCode',\n input: TextBox,\n type: 'password',\n }),\n ],\n },\n\n Footer: Footer,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, View, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport CountryUtil from 'util/CountryUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport RouterUtil from 'v1/util/RouterUtil';\nconst PUSH_INTERVAL = 6000;\n\n// Note: Keep-alive is set to 5 seconds - using 5 seconds here will result\n// in network connection lost errors in Safari and IE.\n\nconst EnrollmentLinkSentControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"oform.back\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.options.appState.get('activatedFactorProvider'),\n this.options.appState.get('activatedFactorType'),\n 'manual'\n );\n\n this.options.appState.trigger('navigate', url);\n },\n});\nconst emailSentForm = {\n title: _.partial(loc, 'enroll.totp.enrollViaEmail.title', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'sent-email-activation-link' },\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

            {{i18n code=\"enroll.totp.enrollViaEmail.msg\" bundle=\"login\"}}

            \\\n

            {{email}}

            \\\n '\n ),\n getTemplateData: function() {\n return { email: this.options.appState.get('userEmail') };\n },\n }),\n }),\n ],\n};\nconst smsSentForm = {\n title: _.partial(loc, 'enroll.totp.enrollViaSms.title', 'login'),\n noButtonBar: true,\n attributes: { 'data-se': 'sent-sms-activation-link' },\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

            {{i18n code=\"enroll.totp.enrollViaSms.msg\" bundle=\"login\"}}

            \\\n

            {{phoneNumber}}

            \\\n '\n ),\n getTemplateData: function() {\n return { phoneNumber: this.model.get('fullPhoneNumber') };\n },\n }),\n }),\n ],\n};\nexport default FormController.extend({\n className: 'enroll-activation-link-sent',\n Model: function() {\n return {\n local: {\n countryCode: ['string', false, this.options.appState.get('userCountryCode')],\n phoneNumber: ['string', false, this.options.appState.get('userPhoneNumber')],\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n derived: {\n countryCallingCode: {\n deps: ['countryCode'],\n fn: function(countryCode) {\n return '+' + CountryUtil.getCallingCodeForCountry(countryCode);\n },\n },\n fullPhoneNumber: {\n deps: ['countryCallingCode', 'phoneNumber'],\n fn: function(countryCallingCode, phoneNumber) {\n return countryCallingCode + phoneNumber;\n },\n },\n },\n };\n },\n\n Form: function() {\n const activationType = this.options.appState.get('factorActivationType');\n\n switch (activationType) {\n case 'SMS':\n return smsSentForm;\n case 'EMAIL':\n return emailSentForm;\n default:\n throw new Error('Unknown activation option: ' + activationType);\n }\n },\n\n Footer: EnrollmentLinkSentControllerFooter,\n\n initialize: function() {\n this.pollForEnrollment();\n },\n\n remove: function() {\n return FormController.prototype.remove.apply(this, arguments);\n },\n\n pollForEnrollment: function() {\n return this.model.doTransaction(function(transaction) {\n return transaction.poll(PUSH_INTERVAL);\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isWaitingForActivation')) {\n this.pollForEnrollment();\n return true;\n }\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport EnterPasscodeForm from 'v1/views/enroll-factors/EnterPasscodeForm';\nconst EnterPasscodePushFlowControllerFooter = View.extend({\n template: hbs(\n '\\\n \\\n {{i18n code=\"oform.back\" bundle=\"login\"}}\\\n \\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n const url = RouterUtil.createActivateFactorUrl(\n this.options.appState.get('activatedFactorProvider'),\n 'push',\n 'manual'\n );\n\n this.options.appState.trigger('navigate', url);\n },\n});\nexport default FormController.extend({\n className: 'activate-push',\n Model: function() {\n return {\n props: {\n factorId: ['string', true, this.options.appState.get('activatedFactorId')],\n passCode: ['string', true],\n },\n local: {\n __factorType__: ['string', false, this.options.factorType],\n __provider__: ['string', false, this.options.provider],\n },\n save: function() {\n return this.doTransaction(function(transaction) {\n return transaction.activate({\n passCode: this.get('passCode'),\n });\n });\n },\n };\n },\n\n Form: EnterPasscodeForm,\n\n Footer: EnterPasscodePushFlowControllerFooter,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nexport default View.extend({\n template: hbs(\n '\\\n
            \\\n \\\n

            {{i18n code=\"contact.support\" bundle=\"login\" arguments=\"helpSupportNumber\"}}

            \\\n
            '\n ),\n className: 'contact-support',\n\n getTemplateData: function() {\n return this.settings.pick('helpSupportNumber');\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport Util from 'util/Util';\nimport ValidationUtil from 'v1/util/ValidationUtil';\nimport ContactSupport from 'v1/views/shared/ContactSupport';\nimport TextBox from 'v1/views/shared/TextBox';\nconst ForgotPasswordControllernoFactorsError = View.extend({\n template: hbs`\n
            \n \n

            {{i18n code=\"password.forgot.noFactorsEnabled\" bundle=\"login\"}}

            \n
            \n `,\n});\nconst ForgotPasswordControllerFooter = View.extend({\n template: hbs(\n '\\\n {{#unless hideBackToSignInForReset}}\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n {{/unless}}\\\n {{#if helpSupportNumber}}\\\n \\\n {{i18n code=\"mfa.noAccessToEmail\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .js-back': function(e) {\n e.preventDefault();\n this.back();\n },\n 'click .js-contact-support': function(e) {\n e.preventDefault();\n this.state.trigger('contactSupport');\n this.$('.js-contact-support').hide();\n },\n },\n getTemplateData: function() {\n return {\n hideBackToSignInForReset: this.settings.get('features.hideBackToSignInForReset'),\n helpSupportNumber: this.settings.get('helpSupportNumber'),\n };\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n});\nexport default FormController.extend({\n className: 'forgot-password',\n Model: {\n props: {\n username: ['string', true],\n factorType: ['string', true],\n },\n validate: function() {\n return ValidationUtil.validateUsername(this);\n },\n save: function() {\n const self = this;\n const relayState = this.settings.get('relayState');\n\n this.startTransaction(function(authClient) {\n return authClient.forgotPassword({\n username: self.settings.transformUsername(self.get('username'), Enums.FORGOT_PASSWORD),\n factorType: self.get('factorType'),\n relayState: relayState,\n });\n }).catch(function() {\n //need empty fail handler on model to display errors on form\n });\n },\n },\n Form: {\n noButtonBar: true,\n title: _.partial(loc, 'password.reset', 'login'),\n formChildren: function() {\n const smsEnabled = this.settings.get('features.smsRecovery');\n /*eslint complexity: [2, 9] max-statements: [2, 23] */\n\n const callEnabled = this.settings.get('features.callRecovery');\n const emailEnabled = this.settings.get('features.emailRecovery');\n const noFactorsEnabled = !(smsEnabled || callEnabled || emailEnabled);\n const formChildren = [];\n\n if (noFactorsEnabled) {\n this.add(ForgotPasswordControllernoFactorsError, '.o-form-error-container');\n } else {\n formChildren.push(\n FormType.Input({\n label: loc('password.forgot.email.or.username.placeholder', 'login'),\n 'label-top': true,\n explain: Util.createInputExplain(\n 'password.forgot.email.or.username.tooltip',\n 'password.forgot.email.or.username.placeholder',\n 'login'\n ),\n 'explain-top': true,\n name: 'username',\n input: TextBox,\n inputId: 'account-recovery-username',\n autoComplete: Util.getAutocompleteValue(this.settings, 'username'),\n type: 'text',\n inlineValidation: false,\n })\n );\n if (smsEnabled || callEnabled) {\n formChildren.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n

            \\\n {{i18n code=\"recovery.mobile.hint\" bundle=\"login\" arguments=\"mobileFactors\"}}\\\n

            '\n ),\n getTemplateData: function() {\n let mobileFactors;\n\n if (smsEnabled && callEnabled) {\n mobileFactors = loc('recovery.smsOrCall');\n } else if (callEnabled) {\n mobileFactors = loc('recovery.call');\n } else {\n mobileFactors = loc('recovery.sms');\n }\n return { mobileFactors: mobileFactors };\n },\n }),\n })\n );\n }\n if (smsEnabled) {\n this.$el.addClass('forgot-password-sms-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'sms-button',\n 'password.forgot.sendText',\n Enums.RECOVERY_FACTOR_TYPE_SMS,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_SMS);\n }\n if (callEnabled) {\n this.$el.addClass('forgot-password-call-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'call-button',\n 'password.forgot.call',\n Enums.RECOVERY_FACTOR_TYPE_CALL,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_CALL);\n }\n if (emailEnabled) {\n this.$el.addClass('forgot-password-email-enabled');\n formChildren.push(\n this.createRecoveryFactorButton(\n 'email-button',\n 'password.forgot.sendEmail',\n Enums.RECOVERY_FACTOR_TYPE_EMAIL,\n this\n )\n );\n this.setDefaultFactorType(Enums.RECOVERY_FACTOR_TYPE_EMAIL);\n }\n }\n\n return formChildren;\n },\n initialize: function() {\n this.listenTo(this.state, 'contactSupport', function() {\n this.add(ContactSupport, '.o-form-error-container');\n });\n\n this.listenTo(this, 'save', function() {\n this.options.appState.set('username', this.model.get('username'));\n this.model.save();\n });\n },\n setDefaultFactorType: function(factorType) {\n if (_.isEmpty(this.model.get('factorType'))) {\n this.model.set('factorType', factorType);\n }\n },\n createRecoveryFactorButton: function(className, labelCode, factorType, form) {\n return FormType.Button({\n attributes: { 'data-se': className },\n className: 'button button-primary button-wide ' + className,\n title: loc(labelCode, 'login'),\n click: function() {\n form.clearErrors();\n if (this.model.isValid()) {\n this.model.set('factorType', factorType);\n form.trigger('save', this.model);\n }\n },\n });\n },\n },\n Footer: ForgotPasswordControllerFooter,\n\n initialize: function() {\n this.options.appState.unset('username');\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { internal } from '@okta/courage';\nconst Cookie = internal.util.Cookie;\nconst LAST_USERNAME_COOKIE_NAME = 'ln';\nconst DAYS_SAVE_REMEMBER = 365;\nconst fn = {};\n\nfn.getCookieUsername = function() {\n return Cookie.getCookie(LAST_USERNAME_COOKIE_NAME);\n};\n\nfn.setUsernameCookie = function(username) {\n Cookie.setCookie(LAST_USERNAME_COOKIE_NAME, username, {\n expires: DAYS_SAVE_REMEMBER,\n path: '/',\n });\n};\n\nfn.removeUsernameCookie = function() {\n Cookie.removeCookie(LAST_USERNAME_COOKIE_NAME, { path: '/' });\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc, Model } from '@okta/courage';\nimport CookieUtil from 'util/CookieUtil';\nimport Enums from 'util/Enums';\nimport BaseLoginModel from './BaseLoginModel';\n\nexport default BaseLoginModel.extend({\n props: function() {\n const cookieUsername = CookieUtil.getCookieUsername();\n const properties = this.getUsernameAndRemember(cookieUsername);\n const props = {\n username: {\n type: 'string',\n validate: function(value) {\n if (_.isEmpty(value)) {\n return loc('error.username.required', 'login');\n }\n },\n value: properties.username,\n },\n lastUsername: ['string', false, cookieUsername],\n context: ['object', false],\n remember: ['boolean', true, properties.remember],\n multiOptionalFactorEnroll: ['boolean', true],\n };\n\n if (!(this.settings && this.settings.get('features.passwordlessAuth'))) {\n props.password = {\n type: 'string',\n validate: function(value) {\n if (_.isEmpty(value)) {\n return loc('error.password.required', 'login');\n }\n },\n };\n }\n return props;\n },\n\n getUsernameAndRemember: function(cookieUsername) {\n const settingsUsername = this.settings && this.settings.get('username');\n const rememberMeEnabled = this.settings && this.settings.get('features.rememberMe');\n let remember = false;\n let username;\n\n if (settingsUsername) {\n username = settingsUsername;\n remember = rememberMeEnabled && username === cookieUsername;\n } else if (rememberMeEnabled && cookieUsername) {\n // Only respect the cookie if the feature is enabled.\n // Allows us to force prompting when necessary, e.g. SAML ForceAuthn\n username = cookieUsername;\n remember = true;\n }\n\n return {\n username: username,\n remember: remember,\n };\n },\n\n constructor: function(options) {\n this.settings = options && options.settings;\n this.appState = options && options.appState;\n Model.apply(this, arguments);\n this.listenTo(this, 'change:username', function(model, username) {\n this.set({ remember: username === this.get('lastUsername') });\n });\n },\n parse: function(options) {\n return _.omit(options, ['settings', 'appState']);\n },\n\n save: function() {\n const username = this.settings.transformUsername(this.get('username'), Enums.PRIMARY_AUTH);\n const remember = this.get('remember');\n const lastUsername = this.get('lastUsername');\n\n this.setUsernameCookie(username, remember, lastUsername);\n\n //the 'save' event here is triggered and used in the BaseLoginController\n //to disable the primary button on the primary auth form\n this.trigger('save');\n\n this.appState.trigger('loading', true);\n\n const signInArgs = this.getSignInArgs(username);\n let primaryAuthPromise;\n\n if (this.appState.get('isUnauthenticated')) {\n const authClient = this.appState.settings.getAuthClient();\n\n // bootstrapped with stateToken\n if (this.appState.get('isIdxStateToken')) {\n // if its an idx stateToken, we send the parameter as identifier to login API\n primaryAuthPromise = this.doTransaction(function(transaction) {\n return this.doPrimaryAuth(authClient, signInArgs, transaction.login);\n });\n } else {\n primaryAuthPromise = this.doTransaction(function(transaction) {\n return this.doPrimaryAuth(authClient, signInArgs, transaction.authenticate);\n }, true);\n }\n } else {\n //normal username/password flow without stateToken\n primaryAuthPromise = this.startTransaction(function(authClient) {\n return this.doPrimaryAuth(authClient, signInArgs, _.bind(authClient.signInWithCredentials, authClient));\n });\n }\n\n return primaryAuthPromise\n .catch(() => {\n // Specific event handled by the Header for the case where the security image is not\n // enabled and we want to show a spinner. (Triggered only here and handled only by Header).\n this.appState.trigger('removeLoading');\n CookieUtil.removeUsernameCookie();\n })\n .finally(() => {\n this.appState.trigger('loading', false);\n });\n },\n\n getSignInArgs: function(username) {\n const multiOptionalFactorEnroll = this.get('multiOptionalFactorEnroll');\n const signInArgs = {};\n\n if (!this.settings.get('features.passwordlessAuth')) {\n signInArgs.password = this.get('password');\n }\n\n // if its an idx stateToken, we send the parameter as identifier to login API\n if (this.appState.get('isIdxStateToken')) {\n signInArgs.identifier = username;\n } else {\n //only post options param for non-idx flows\n signInArgs.username = username;\n signInArgs.options = {\n warnBeforePasswordExpired: true,\n multiOptionalFactorEnroll: multiOptionalFactorEnroll,\n };\n }\n return signInArgs;\n },\n\n setUsernameCookie: function(username, remember, lastUsername) {\n // Do not modify the cookie when feature is disabled, relevant for SAML ForceAuthn prompts\n if (this.settings.get('features.rememberMe')) {\n // Only delete the cookie if its owner says so. This allows other\n // users to log in on a one-off basis.\n if (!remember && lastUsername === username) {\n CookieUtil.removeUsernameCookie();\n } else if (remember) {\n CookieUtil.setUsernameCookie(username);\n }\n }\n },\n\n doPrimaryAuth: function(authClient, signInArgs, func) {\n const deviceFingerprintEnabled = this.settings.get('features.deviceFingerprinting');\n const typingPatternEnabled = this.settings.get('features.trackTypingPattern');\n\n // Add the custom header for fingerprint, typing pattern if needed, and then remove it afterwards\n // Since we only need to send it for primary auth\n if (deviceFingerprintEnabled && this.appState.get('deviceFingerprint')) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', this.appState.get('deviceFingerprint'));\n }\n if (typingPatternEnabled && this.appState.get('typingPattern')) {\n authClient.http.setRequestHeader('X-Typing-Pattern', this.appState.get('typingPattern'));\n }\n\n const self = this;\n\n return func(signInArgs).finally(function() {\n if (deviceFingerprintEnabled) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', undefined);\n self.appState.unset('deviceFingerprint'); //Fingerprint can only be used once\n }\n if (typingPatternEnabled) {\n authClient.http.setRequestHeader('X-Typing-Pattern', undefined);\n self.appState.unset('typingPattern');\n }\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { $ } from '@okta/courage';\nimport Q from 'q';\nexport default {\n getUserAgent: function() {\n return navigator.userAgent;\n },\n isMessageFromCorrectSource: function($iframe, event) {\n return event.source === $iframe[0].contentWindow;\n },\n generateDeviceFingerprint: function(oktaDomainUrl, element) {\n const userAgent = this.getUserAgent();\n\n if (!userAgent) {\n return Q.reject('user agent is not defined');\n } else if (isWindowsPhone(userAgent)) {\n return Q.reject('device fingerprint is not supported on Windows phones');\n }\n\n const deferred = Q.defer();\n const self = this;\n let $iframe;\n let iFrameTimeout;\n\n function isWindowsPhone(userAgent) {\n return userAgent.match(/windows phone|iemobile|wpdesktop/i);\n }\n\n function removeIframe() {\n $iframe.off();\n $iframe.remove();\n window.removeEventListener('message', onMessageReceivedFromOkta, false);\n }\n\n function handleError(reason) {\n removeIframe();\n deferred.reject(reason);\n }\n\n function onMessageReceivedFromOkta(event) {\n if (!self.isMessageFromCorrectSource($iframe, event)) {\n return;\n }\n // deviceFingerprint service is available, clear timeout\n clearTimeout(iFrameTimeout);\n if (!event || !event.data || event.origin !== oktaDomainUrl) {\n handleError('no data');\n return;\n }\n try {\n const message = JSON.parse(event.data);\n\n if (message && message.type === 'FingerprintServiceReady') {\n sendMessageToOkta({ type: 'GetFingerprint' });\n } else if (message && message.type === 'FingerprintAvailable') {\n removeIframe();\n deferred.resolve(message.fingerprint);\n } else {\n handleError('no data');\n }\n } catch (error) {\n //Ignore any errors since we could get other messages too\n }\n }\n\n function sendMessageToOkta(message) {\n const win = $iframe[0].contentWindow;\n\n if (win) {\n win.postMessage(JSON.stringify(message), oktaDomainUrl);\n }\n }\n\n // Attach listener\n window.addEventListener('message', onMessageReceivedFromOkta, false);\n // Create and Load devicefingerprint page inside the iframe\n $iframe = $('');\n if (this.options.appState.get('allowRememberDevice')) {\n this.addInput({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n });\n }\n Duo.init({\n host: this.model.get('host'),\n sig_request: this.model.get('signature'),\n iframe: this.$('iframe').get(0),\n post_action: _.bind(this.model.verify, this.model),\n });\n },\n },\n\n fetchInitialData: function() {\n const self = this;\n\n return this.model.getInitOptions().then(function(trans) {\n const res = trans.data;\n\n if (\n !res._embedded ||\n !res._embedded.factor ||\n !res._embedded.factor._embedded ||\n !res._embedded.factor._embedded.verification\n ) {\n throw new Error('Response does not have duo verification options');\n }\n const verification = res._embedded.factor._embedded.verification;\n\n self.model.set({\n host: verification.host,\n signature: verification.signature,\n postAction: verification._links.complete.href,\n factorId: res._embedded.factor.id,\n stateToken: res.stateToken,\n });\n });\n },\n\n trapAuthResponse: function() {\n if (this.options.appState.get('isMfaChallenge')) {\n return true;\n }\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity:[2, 10], max-params: [2, 11] */\nimport { _, $, loc, View, internal } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport FooterWithBackLink from 'v1/views/shared/FooterWithBackLink';\nlet { Util } = internal.util;\nexport default FormController.extend({\n className: 'piv-cac-card',\n Model: {\n save: async function() {\n this.trigger('request');\n const self = this;\n const pivConfig = this.settings.get('piv');\n const data = {\n fromURI: this.settings.get('relayState'),\n isCustomDomain: pivConfig.isCustomDomain,\n customDomain: pivConfig.customDomain,\n };\n\n try {\n await this.getCert(pivConfig.certAuthUrl);\n const res = await this.postCert(pivConfig.certAuthUrl, data);\n Util.redirect(res.redirectUrl);\n } catch (err) {\n if (_.isEmpty(err.responseJSON) && !err.responseText) {\n err.responseJSON = {\n errorSummary: loc('piv.cac.error', 'login'),\n };\n }\n self.trigger('error', self, err);\n }\n },\n\n getCert: function(certAuthUrl) {\n return $.get({\n url: certAuthUrl,\n xhrFields: {\n withCredentials: true,\n },\n beforeSend: function() {\n // overriding this function to prevent our jquery-wrapper from\n // setting headers. Need to keep this a simple request in order for\n // PIV / CAC to work in IE.\n },\n });\n },\n\n postCert: function(certAuthUrl, data) {\n return $.post({\n url: certAuthUrl,\n xhrFields: {\n withCredentials: true,\n },\n data: JSON.stringify(data),\n contentType: 'text/plain',\n beforeSend: function() {\n // overriding this function to prevent our jquery-wrapper from\n // setting headers. Need to keep this a simple request in order for\n // PIV / CAC to work in IE.\n },\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'piv.cac.title', 'login'),\n className: 'piv-cac-card',\n noCancelButton: true,\n save: _.partial(loc, 'retry', 'login'),\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: [\n FormType.View({\n View: View.extend({\n template: hbs(\n '
            \\\n

            {{i18n code=\"piv.cac.card.insert\" bundle=\"login\"}}

            \\\n
            \\\n
            '\n ),\n }),\n }),\n ],\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar').show();\n },\n\n postRender: function() {\n _.defer(() => {\n this.model.save();\n });\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterWithBackLink,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* global u2f */\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Q from 'q';\nimport 'u2f-api-polyfill';\nimport { U2FError } from 'util/Errors';\nimport FactorUtil from 'util/FactorUtil';\nimport FidoUtil from 'util/FidoUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\n\nfunction getRegisteredKeysSequence(factors) {\n const keys = [];\n\n _.each(factors, function(factor) {\n keys.push({\n version: factor.profile.version,\n keyHandle: factor.profile.credentialId,\n });\n });\n return keys;\n}\n\nexport default FormController.extend({\n className: 'mfa-verify verify-u2f',\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n },\n\n save: function() {\n this.trigger('request');\n\n return this.doTransaction(function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: 'u2f',\n });\n } else {\n factor = _.findWhere(transaction.factors, {\n factorType: 'u2f',\n provider: 'FIDO',\n });\n }\n const self = this;\n\n return factor.verify().then(function(transaction) {\n let registeredKeys;\n let appId;\n let nonce;\n\n if (transaction.factors) {\n const factors = transaction.factors;\n\n appId = factors[0]['profile']['appId'];\n nonce = transaction.challenge.nonce;\n registeredKeys = getRegisteredKeysSequence(factors);\n } else {\n const factorData = transaction.factor;\n\n appId = factorData.profile.appId;\n nonce = factorData.challenge.nonce;\n registeredKeys = [{ version: FidoUtil.getU2fVersion(), keyHandle: factorData.profile.credentialId }];\n }\n self.trigger('request');\n\n const deferred = Q.defer();\n\n u2f.sign(appId, nonce, registeredKeys, function(data) {\n self.trigger('errors:clear');\n if (data.errorCode && data.errorCode !== 0) {\n const isOneFactor = self.options.appState.get('factors').length === 1;\n\n deferred.reject(\n new U2FError({\n xhr: {\n responseJSON: {\n errorSummary: FidoUtil.getU2fVerifyErrorMessageByCode(data.errorCode, isOneFactor),\n },\n },\n })\n );\n } else {\n const rememberDevice = !!self.get('rememberDevice');\n\n return factor\n .verify({\n clientData: data.clientData,\n signatureData: data.signatureData,\n rememberDevice: rememberDevice,\n })\n .then(deferred.resolve);\n }\n });\n return deferred.promise;\n });\n })\n .catch(() => {});\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.u2f', 'login'),\n className: 'verify-u2f-form',\n noCancelButton: true,\n save: _.partial(loc, 'verify.u2f.retry', 'login'),\n noButtonBar: function() {\n return !FidoUtil.isU2fAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: function() {\n const result = [];\n\n if (!FidoUtil.isU2fAvailable()) {\n let errorMessageKey = 'u2f.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'u2f.error.factorNotSupported.oneFactor';\n }\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n } else {\n result.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '\\\n
            \\\n

            {{i18n code=\"verify.u2f.instructions\" bundle=\"login\"}}

            \\\n

            {{i18n code=\"verify.u2f.instructionsBluetooth\" bundle=\"login\"}}

            \\\n
            \\\n
            '\n ),\n }),\n })\n );\n }\n\n if (this.options.appState.get('allowRememberDevice')) {\n result.push(\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n })\n );\n }\n\n return result;\n },\n\n postRender: function() {\n _.defer(() => {\n if (FidoUtil.isU2fAvailable()) {\n this.model.save();\n } else {\n this.$('[data-se=\"u2f-waiting\"]').addClass('hide');\n }\n });\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').removeClass('hide');\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').addClass('hide');\n this.$('.o-form-button-bar').show();\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity:[2, 10], max-params: [2, 11] */\nimport { _, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Q from 'q';\nimport CryptoUtil from 'util/CryptoUtil';\nimport { WebauthnAbortError, WebAuthnError } from 'util/Errors';\nimport FactorUtil from 'util/FactorUtil';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\n\nfunction getAllowCredentials(factors) {\n const allowCredentials = [];\n\n _.each(factors, function(factor) {\n allowCredentials.push({\n type: 'public-key',\n id: CryptoUtil.strToBin(factor.profile.credentialId),\n });\n });\n return allowCredentials;\n}\n\nexport default FormController.extend({\n className: 'mfa-verify verify-webauthn',\n Model: {\n props: {\n rememberDevice: 'boolean',\n },\n\n initialize: function() {\n const rememberDevice = FactorUtil.getRememberDeviceValue(this.appState);\n\n // set the initial value for remember device (Cannot do this while defining the\n // local property because this.settings would not be initialized there yet).\n this.set('rememberDevice', rememberDevice);\n this.appState.on('factorSwitched signOut', () => {\n if (this.webauthnAbortController) {\n this.webauthnAbortController.abort();\n this.webauthnAbortController = null;\n }\n });\n },\n\n save: function() {\n this.trigger('request');\n\n return this.doTransaction(function(transaction) {\n let factor;\n\n if (transaction.factorTypes) {\n factor = _.findWhere(transaction.factorTypes, {\n factorType: 'webauthn',\n });\n } else {\n factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n }\n\n const self = this;\n\n return factor.verify().then(function(transaction) {\n let allowCredentials;\n let challenge;\n\n if (transaction.factors) {\n const factors = transaction.factors;\n\n challenge = transaction.challenge;\n allowCredentials = getAllowCredentials(factors);\n } else {\n const factorData = transaction.factor;\n\n challenge = factorData.challenge;\n allowCredentials = getAllowCredentials([factorData]);\n }\n self.trigger('request');\n // verify via browser webauthn js\n\n const options = _.extend({}, challenge, {\n allowCredentials: allowCredentials,\n challenge: CryptoUtil.strToBin(challenge.challenge),\n });\n\n // AbortController is not supported in IE11\n if (typeof AbortController !== 'undefined') {\n self.webauthnAbortController = new AbortController();\n }\n return new Q(\n // navigator.credentials is not supported in IE11\n // eslint-disable-next-line compat/compat\n navigator.credentials.get({\n publicKey: options,\n signal: self.webauthnAbortController && self.webauthnAbortController.signal,\n })\n )\n .then(function(assertion) {\n const rememberDevice = !!self.get('rememberDevice');\n\n return factor.verify({\n clientData: CryptoUtil.binToStr(assertion.response.clientDataJSON),\n authenticatorData: CryptoUtil.binToStr(assertion.response.authenticatorData),\n signatureData: CryptoUtil.binToStr(assertion.response.signature),\n rememberDevice: rememberDevice,\n });\n })\n .catch(function(error) {\n self.trigger('errors:clear');\n // Do not display if it is abort error triggered by code when switching.\n // self.webauthnAbortController would be null if abort was triggered by code.\n if (!self.webauthnAbortController) {\n throw new WebauthnAbortError();\n } else {\n throw new WebAuthnError({\n xhr: { responseJSON: { errorSummary: error.message } },\n });\n }\n })\n .finally(function() {\n // unset webauthnAbortController on successful authentication or error\n self.webauthnAbortController = null;\n });\n });\n })\n .catch(() => {});\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.webauthn.biometric', 'login'),\n className: 'verify-webauthn-form',\n noCancelButton: true,\n save: _.partial(loc, 'mfa.challenge.verify', 'login'),\n noButtonBar: function() {\n return !webauthn.isNewApiAvailable();\n },\n modelEvents: {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n },\n\n formChildren: function() {\n const children = [];\n\n if (webauthn.isNewApiAvailable()) {\n children.push(\n FormType.View({\n View: View.extend({\n template: hbs(\n '
            \\\n

            {{i18n code=\"verify.webauthn.biometric.instructions\" bundle=\"login\"}}

            \\\n
            \\\n
            '\n ),\n }),\n })\n );\n } else {\n let errorMessageKey = 'webauthn.biometric.error.factorNotSupported';\n\n if (this.options.appState.get('factors').length === 1) {\n errorMessageKey = 'webauthn.biometric.error.factorNotSupported.oneFactor';\n }\n children.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc(errorMessageKey, 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n if (this.options.appState.get('allowRememberDevice')) {\n children.push(\n FormType.Input({\n label: false,\n 'label-top': true,\n placeholder: this.options.appState.get('rememberDeviceLabel'),\n className: 'margin-btm-0',\n name: 'rememberDevice',\n type: 'checkbox',\n })\n );\n }\n\n return children;\n },\n\n _startEnrollment: function() {\n this.$('.okta-waiting-spinner').show();\n this.$('.o-form-button-bar').hide();\n },\n\n _stopEnrollment: function() {\n this.$('.okta-waiting-spinner').hide();\n this.$('.o-form-button-bar [type=\"submit\"]')[0].value = loc('verify.u2f.retry', 'login');\n this.$('.o-form-button-bar').show();\n },\n },\n\n postRender: function() {\n _.defer(() => {\n // Trigger browser prompt automatically for other browsers for better UX.\n if (webauthn.isNewApiAvailable() && !BrowserFeatures.isSafari()) {\n this.model.save();\n }\n });\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, loc } from '@okta/courage';\nimport FormController from 'v1/util/FormController';\nimport FormType from 'v1/util/FormType';\nimport webauthn from 'util/webauthn';\nimport HtmlErrorMessageView from 'v1/views/mfa-verify/HtmlErrorMessageView';\nimport FooterMFA from 'v1/views/shared/FooterMFA';\nimport Spinner from 'v1/views/shared/Spinner';\nexport default FormController.extend({\n className: 'mfa-verify verify-windows-hello',\n Model: {\n local: {\n __autoTriggered__: 'boolean',\n },\n\n save: function() {\n if (!webauthn.isAvailable()) {\n return;\n }\n\n this.trigger('request');\n const model = this;\n\n return this.doTransaction(function(transaction) {\n const factor = _.findWhere(transaction.factors, {\n factorType: 'webauthn',\n provider: 'FIDO',\n });\n\n return factor.verify().then(function(verifyData) {\n const factorData = verifyData.factor;\n\n return webauthn\n .getAssertion(factorData.challenge.nonce, [{ id: factorData.profile.credentialId }])\n .then(function(assertion) {\n return factor.verify({\n authenticatorData: assertion.authenticatorData,\n clientData: assertion.clientData,\n signatureData: assertion.signature,\n });\n })\n .then(function(data) {\n model.trigger('sync');\n model.trigger('signIn');\n return data;\n })\n .catch(function(error) {\n switch (error.message) {\n case 'AbortError':\n case 'NotFoundError':\n case 'NotSupportedError':\n model.trigger('abort', error.message);\n return transaction;\n }\n\n throw error;\n });\n });\n });\n },\n },\n\n Form: {\n autoSave: true,\n hasSavingState: false,\n title: _.partial(loc, 'factor.windowsHello', 'login'),\n subtitle: function() {\n return webauthn.isAvailable() ? loc('verify.windowsHello.subtitle', 'login') : '';\n },\n save: _.partial(loc, 'verify.windowsHello.save', 'login'),\n\n customSavingState: {\n stop: 'abort',\n },\n\n modelEvents: function() {\n if (!webauthn.isAvailable()) {\n return {};\n }\n\n return {\n request: '_startEnrollment',\n error: '_stopEnrollment',\n abort: '_stopEnrollment',\n signIn: '_successEnrollment',\n };\n },\n\n noButtonBar: function() {\n return !webauthn.isAvailable();\n },\n\n formChildren: function() {\n const result = [];\n\n if (!webauthn.isAvailable()) {\n result.push(\n FormType.View(\n { View: new HtmlErrorMessageView({ message: loc('enroll.windowsHello.error.notWindows', 'login') }) },\n { selector: '.o-form-error-container' }\n )\n );\n }\n\n result.push(FormType.View({ View: new Spinner({ model: this.model, visible: false }) }));\n\n return result;\n },\n\n postRender: function() {\n if (this.options.appState.get('factors').length === 1 && !this.model.get('__autoTriggered__')) {\n this.model.set('__autoTriggered__', true);\n this.model.save();\n }\n },\n\n _startEnrollment: function() {\n this.subtitle = loc('verify.windowsHello.subtitle.loading', 'login');\n\n this.model.trigger('spinner:show');\n this._resetErrorMessage();\n\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _stopEnrollment: function(errorMessage) {\n this.subtitle = loc('verify.windowsHello.subtitle', 'login');\n\n this.model.trigger('spinner:hide');\n this.$('.o-form-button-bar').removeClass('hide');\n\n let message;\n\n switch (errorMessage) {\n case 'NotFoundError':\n message = this.options.appState.get('factors').length > 1\n ? loc('verify.windowsHello.error.notFound.selectAnother', 'login')\n : loc('verify.windowsHello.error.notFound', 'login');\n break;\n\n case 'NotSupportedError':\n message = loc('enroll.windowsHello.error.notConfiguredHtml', 'login');\n break;\n }\n\n this._resetErrorMessage();\n\n if (message) {\n const messageView = new HtmlErrorMessageView({\n message: message,\n });\n\n this.$('.o-form-error-container').addClass('o-form-has-errors');\n this.add(messageView, { selector: '.o-form-error-container' });\n this._errorMessageView = this.last();\n }\n\n this.render();\n },\n\n _successEnrollment: function() {\n this.subtitle = this.settings.get('brandName')\n ? loc('verify.windowsHello.subtitle.signingIn.specific', 'login', [this.settings.get('brandName')])\n : loc('verify.windowsHello.subtitle.signingIn.generic', 'login');\n this.render();\n this.$('.o-form-button-bar').addClass('hide');\n },\n\n _resetErrorMessage: function() {\n this._errorMessageView && this._errorMessageView.remove();\n this._errorMessageView = undefined;\n this.clearErrors();\n },\n },\n\n back: function() {\n // Empty function on verify controllers to prevent users\n // from navigating back during 'verify' using the browser's\n // back button. The URL will still change, but the view will not\n // More details in OKTA-135060.\n },\n\n Footer: FooterMFA,\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Enums from 'util/Enums';\nexport default View.extend({\n template: hbs(\n '\\\n {{#if showLink}}\\\n \\\n {{i18n code=\"goback\" bundle=\"login\"}}\\\n \\\n {{/if}}\\\n '\n ),\n className: 'auth-footer',\n events: {\n 'click .help': function(e) {\n e.preventDefault();\n this.back();\n },\n },\n back: function() {\n this.state.set('navigateDir', Enums.DIRECTION_BACK);\n this.options.appState.trigger('navigate', '');\n },\n getTemplateData: function() {\n const error = this.model.appState.get('flashError');\n const showLink = error.is && error.is('terminal');\n return {\n showLink: showLink\n };\n }\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport FormController from 'v1/util/FormController';\nimport FooterWithBackLinkOnError from 'v1/views/shared/FooterWithBackLinkOnError';\nexport default FormController.extend({\n className: 'error-state',\n Model: {},\n Form: {\n noButtonBar: true,\n },\n Footer: FooterWithBackLinkOnError,\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, $, loc, Model } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Factor from 'v1/models/Factor';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport { UnsupportedBrowserError } from 'util/Errors';\nconst DEFAULT_APP_LOGO = '/img/logos/default.png';\n\n// Keep track of stateMachine with this special model. Some reasons to not\n// keep it generic:\n// 1. We know exactly what we're using appState for by requiring props\n// 2. Can have some derived functions to help us translate the lastAuthRes\n\nconst USER_NOT_SEEN_ON_DEVICE = '/img/security/unknown.png';\nconst UNDEFINED_USER = '/img/security/default.png';\nconst NEW_USER = '/img/security/unknown-device.png';\nconst NEW_USER_IMAGE_DESCRIPTION = '';\nconst UNDEFINED_USER_IMAGE_DESCRIPTION = '';\nconst UNKNOWN_IMAGE_DESCRIPTION = '';\nconst securityImageUrlTpl = hbs('{{baseUrl}}/login/getimage?username={{username}}');\n\nfunction getSecurityImage(baseUrl, username, deviceFingerprint) {\n // When the username is empty, we want to show the default image.\n if (_.isEmpty(username) || _.isUndefined(username)) {\n return Q({\n securityImage: UNDEFINED_USER,\n securityImageDescription: UNDEFINED_USER_IMAGE_DESCRIPTION,\n });\n }\n\n // Reserved characters in the username must be escaped before the query can be safely executed\n username = encodeURIComponent(username);\n const url = securityImageUrlTpl({ baseUrl: baseUrl, username: username });\n const data = {\n url: url,\n dataType: 'json',\n };\n\n if (deviceFingerprint) {\n data['headers'] = { 'X-Device-Fingerprint': deviceFingerprint };\n }\n return Q($.ajax(data)).then(function(res) {\n if (res.pwdImg === USER_NOT_SEEN_ON_DEVICE) {\n // When we get an unknown.png security image from OKTA,\n // we want to show the unknown-device security image.\n // We are mapping the server's img url to a new one because\n // we still need to support the original login page.\n return {\n securityImage: NEW_USER,\n securityImageDescription: NEW_USER_IMAGE_DESCRIPTION,\n };\n }\n return {\n securityImage: res.pwdImg,\n securityImageDescription: res.imageDescription || UNKNOWN_IMAGE_DESCRIPTION,\n };\n });\n}\n\nfunction getMinutesString(factorLifetimeInMinutes) {\n if (factorLifetimeInMinutes > 60 && factorLifetimeInMinutes <= 1440) {\n const lifetimeInHours = factorLifetimeInMinutes / 60;\n\n return loc('hours', 'login', [lifetimeInHours]);\n } else if (factorLifetimeInMinutes > 1440) {\n const lifetimeInDays = factorLifetimeInMinutes / 1440;\n\n return loc('days', 'login', [lifetimeInDays]);\n }\n //Use minutes as the time unit by default\n if (factorLifetimeInMinutes === 1) {\n return loc('minutes.oneMinute', 'login');\n }\n return loc('minutes', 'login', [factorLifetimeInMinutes]);\n}\n\nfunction getGracePeriodRemainingDays(gracePeriodEndDate) {\n const endDate = new Date(gracePeriodEndDate).getTime();\n const remainingDays = Math.floor((endDate - new Date().getTime()) / (1000 * 3600 * 24));\n\n return remainingDays;\n}\n\nfunction combineFactorsObjects(factorTypes, factors) {\n const addedFactorTypes = [];\n const combinedFactors = [];\n\n _.each(factors, function(factor) {\n const factorType = factor.factorType;\n\n if (!_.contains(addedFactorTypes, factorType)) {\n const factorTypeObj = _.findWhere(factorTypes, { factorType: factorType });\n\n if (factorTypeObj) {\n addedFactorTypes.push(factorType);\n combinedFactors.push(factorTypeObj);\n } else {\n combinedFactors.push(factor);\n }\n }\n });\n return combinedFactors;\n}\n\nexport default Model.extend({\n initialize: function() {\n // Handle this in initialize (as opposed to a derived property) because\n // the operation is asynchronous\n if (this.settings.get('features.securityImage')) {\n const self = this;\n\n this.listenTo(this, 'change:username', function(model, username) {\n getSecurityImage(this.get('baseUrl'), username, this.get('deviceFingerprint'))\n .then(function(image) {\n model.set('securityImage', image.securityImage);\n model.set('securityImageDescription', image.securityImageDescription);\n model.unset('deviceFingerprint'); //Fingerprint can only be used once\n })\n .fail(function(jqXhr) {\n // Only notify the consumer on a CORS error\n if (BrowserFeatures.corsIsNotEnabled(jqXhr)) {\n self.settings.callGlobalError(new UnsupportedBrowserError(loc('error.enabled.cors')));\n } else {\n throw jqXhr;\n }\n })\n .done();\n });\n }\n },\n\n local: {\n baseUrl: 'string',\n lastAuthResponse: ['object', true, {}],\n transaction: 'object',\n transactionError: 'object',\n username: 'string',\n factors: 'object',\n policy: 'object',\n securityImage: ['string', true, UNDEFINED_USER],\n securityImageDescription: ['string', true, UNDEFINED_USER_IMAGE_DESCRIPTION],\n userCountryCode: 'string',\n userPhoneNumber: 'string',\n factorActivationType: 'string',\n flashError: 'object',\n beaconType: 'string',\n deviceFingerprint: 'string', // valid only once\n typingPattern: 'string',\n // Note: languageCode is special in that it is shared between Settings\n // and AppState. Settings is the *configured* language, and is static.\n // AppState is the dynamic language state - it can be changed via a\n // language picker, etc.\n // Note: this is conceptial feasible but not yet being implemented.\n languageCode: ['string', true],\n disableUsername: ['boolean', false, false],\n trapMfaRequiredResponse: ['boolean', false, false],\n lastFailedChallengeFactorData: ['object', false],\n },\n\n setAuthResponse: function(res) {\n // Because of MFA_CHALLENGE (i.e. DUO), we need to remember factors\n // across auth responses. Not doing this, for example, results in being\n // unable to switch away from the duo factor dropdown.\n if (res._embedded && res._embedded.policy) {\n this.set('policy', res._embedded.policy);\n }\n\n if (res._embedded && res._embedded.factors) {\n let factors = res._embedded.factors;\n\n if (res._embedded.factorTypes) {\n factors = combineFactorsObjects(res._embedded.factorTypes, factors);\n }\n\n const factorsObject = _.map(factors, factor => {\n factor.settings = this.settings;\n factor.appState = this;\n return factor;\n });\n\n this.set('factors', new Factor.Collection(factorsObject, { parse: true }));\n }\n\n this.set('lastAuthResponse', res);\n },\n\n clearLastAuthResponse: function() {\n this.set('lastAuthResponse', {});\n },\n\n setLastFailedChallengeFactorData: function() {\n this.set('lastFailedChallengeFactorData', {\n factor: this.get('factor'),\n errorMessage: this.get('factorResultErrorMessage'),\n });\n },\n\n clearLastFailedChallengeFactorData: function() {\n this.unset('lastFailedChallengeFactorData');\n },\n\n getUser: function() {\n return this.get('user');\n },\n\n derived: {\n isSuccessResponse: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'SUCCESS';\n },\n },\n isMfaRequired: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_REQUIRED' || res.status === 'FACTOR_REQUIRED';\n },\n },\n isProfileRequired: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'PROFILE_REQUIRED';\n },\n },\n isMfaEnroll: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_ENROLL' || res.status === 'FACTOR_ENROLL';\n },\n },\n isMfaChallenge: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_CHALLENGE' || res.status === 'FACTOR_CHALLENGE';\n },\n },\n isSMSPasswordRecovery: {\n deps: ['lastAuthResponse'],\n fn: function({ status, factorType, recoveryType }) {\n return status === 'RECOVERY_CHALLENGE' &&\n factorType?.toLowerCase() === 'sms' &&\n recoveryType?.toLowerCase() === 'password';\n }\n },\n isUnauthenticated: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'UNAUTHENTICATED';\n },\n },\n isMfaRejected: {\n // MFA failures are usually error responses\n // except in the case of Okta Push, when a\n // user clicks 'deny' on his phone or OV app\n // version is below a required version no.\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'REJECTED';\n },\n },\n isMfaTimeout: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'TIMEOUT';\n },\n },\n isMfaEnrollActivate: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'MFA_ENROLL_ACTIVATE' || res.status === 'FACTOR_ENROLL_ACTIVATE';\n },\n },\n isWaitingForActivation: {\n deps: ['isMfaEnrollActivate', 'lastAuthResponse'],\n fn: function(isMfaEnrollActivate, res) {\n return isMfaEnrollActivate && res.factorResult === 'WAITING';\n },\n },\n isWaitingForNumberChallenge: {\n deps: ['lastAuthResponse', 'isMfaChallenge'],\n fn: function(res, isMfaChallenge) {\n if (\n isMfaChallenge &&\n res &&\n res.factorResult === 'WAITING' &&\n res._embedded &&\n res._embedded.factor &&\n res._embedded.factor._embedded &&\n res._embedded.factor._embedded.challenge\n ) {\n return true;\n }\n return false;\n },\n },\n hasMultipleFactorsAvailable: {\n deps: ['factors', 'isMfaRequired', 'isMfaChallenge', 'isUnauthenticated'],\n fn: function(factors, isMfaRequired, isMfaChallenge, isUnauthenticated) {\n if (!isMfaRequired && !isMfaChallenge && !isUnauthenticated) {\n return false;\n }\n return factors && factors.length > 1;\n },\n },\n promptForFactorInUnauthenticated: {\n deps: ['lastAuthResponse', 'factors'],\n fn: function(res, factors) {\n if (res.status !== 'UNAUTHENTICATED') {\n return false;\n }\n return factors && factors.length > 0;\n },\n },\n userId: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.user) {\n return null;\n }\n return res._embedded.user.id;\n },\n },\n isIdxStateToken: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res && _.isString(res.stateToken) && res.stateToken.startsWith('01');\n },\n },\n isPwdExpiringSoon: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.status === 'PASSWORD_WARN';\n },\n },\n passwordExpireDays: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.policy || !res._embedded.policy.expiration) {\n return null;\n }\n return res._embedded.policy.expiration.passwordExpireDays;\n },\n },\n isPwdManagedByOkta: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title) {\n return true;\n }\n return false;\n },\n },\n passwordExpiredWebsiteName: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title) {\n return null;\n }\n return res._links.next.title;\n },\n },\n passwordExpiredLinkUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || !res._links.next.title || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n recoveryType: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.recoveryType;\n },\n },\n factorType: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorType;\n },\n },\n factor: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factor) {\n return null;\n }\n return res._embedded.factor;\n },\n },\n activatedFactorId: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.id : null;\n },\n },\n activatedFactorType: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.factorType : null;\n },\n },\n activatedFactorProvider: {\n deps: ['factor'],\n fn: function(factor) {\n return factor ? factor.provider : null;\n },\n },\n qrcode: {\n deps: ['factor'],\n fn: function(factor) {\n try {\n return factor._embedded.activation._links.qrcode.href;\n } catch (err) {\n return null;\n }\n },\n },\n activationSendLinks: {\n deps: ['factor'],\n fn: function(factor) {\n let sendLinks;\n\n try {\n sendLinks = factor._embedded.activation._links.send;\n } catch (err) {\n sendLinks = [];\n }\n return sendLinks;\n },\n },\n textActivationLinkUrl: {\n deps: ['activationSendLinks'],\n fn: function(activationSendLinks) {\n const item = _.findWhere(activationSendLinks, { name: 'sms' });\n\n return item ? item.href : null;\n },\n },\n emailActivationLinkUrl: {\n deps: ['activationSendLinks'],\n fn: function(activationSendLinks) {\n const item = _.findWhere(activationSendLinks, { name: 'email' });\n\n return item ? item.href : null;\n },\n },\n sharedSecret: {\n deps: ['factor'],\n fn: function(factor) {\n try {\n return factor._embedded.activation.sharedSecret;\n } catch (err) {\n return null;\n }\n },\n },\n duoEnrollActivation: {\n deps: ['factor'],\n fn: function(factor) {\n if (!factor || !factor._embedded || !factor._embedded.activation) {\n return null;\n }\n return factor._embedded.activation;\n },\n },\n prevLink: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (res._links && res._links.prev) {\n return res._links.prev.href;\n }\n return null;\n },\n },\n skipLink: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (res._links && res._links.skip) {\n return res._links.skip.href;\n }\n return null;\n },\n },\n gracePeriodRemainingDays: {\n deps: ['policy'],\n fn: function(policy) {\n if (policy && policy.gracePeriod && policy.gracePeriod.endDate) {\n return getGracePeriodRemainingDays(policy.gracePeriod.endDate);\n }\n return null;\n },\n },\n user: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.user) {\n return null;\n }\n return res._embedded.user;\n },\n },\n recoveryQuestion: {\n deps: ['user'],\n fn: function(user) {\n if (!user || !user.recovery_question) {\n return null;\n }\n return user.recovery_question.question;\n },\n },\n userProfile: {\n deps: ['user'],\n fn: function(user) {\n if (!user || !user.profile) {\n return null;\n }\n return user.profile;\n },\n },\n userConsentName: {\n deps: ['userProfile', 'username'],\n fn: function(userProfile, username) {\n if (!userProfile || _.isEmpty(userProfile.firstName)) {\n return username;\n }\n if (_.isEmpty(userProfile.lastName)) {\n return userProfile.firstName;\n }\n return userProfile.firstName + ' ' + userProfile.lastName.charAt(0) + '.';\n },\n },\n userEmail: {\n deps: ['userProfile'],\n fn: function(userProfile) {\n if (!userProfile || !userProfile.login) {\n return null;\n }\n return userProfile.login;\n },\n },\n userFullName: {\n deps: ['userProfile'],\n fn: function(userProfile) {\n if (!userProfile || (!userProfile.firstName && !userProfile.lastName)) {\n return '';\n }\n return userProfile.firstName + ' ' + userProfile.lastName;\n },\n },\n defaultAppLogo: {\n deps: ['baseUrl'],\n fn: function(baseUrl) {\n return baseUrl + DEFAULT_APP_LOGO;\n },\n },\n expiresAt: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.expiresAt;\n },\n },\n target: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.target;\n },\n },\n targetLabel: {\n deps: ['target'],\n fn: function(target) {\n if (!target) {\n return null;\n }\n return target.label;\n },\n },\n targetLogo: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links.logo;\n },\n },\n targetTermsOfService: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['terms-of-service'];\n },\n },\n targetPrivacyPolicy: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['privacy-policy'];\n },\n },\n targetClientURI: {\n deps: ['target'],\n fn: function(target) {\n if (!target || !target._links) {\n return null;\n }\n return target._links['client-uri'];\n },\n },\n scopes: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.scopes;\n },\n },\n issuer: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res?._embedded?.authentication?.issuer?.uri;\n }\n },\n hasExistingPhones: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factors) {\n return false;\n }\n const factors = res._embedded.factors;\n\n const factor = _.findWhere(factors, { factorType: 'sms', provider: 'OKTA' });\n\n if (!factor || !factor._embedded) {\n return false;\n }\n\n return !!factor._embedded.phones.length;\n },\n },\n hasExistingPhonesForCall: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded || !res._embedded.factors) {\n return false;\n }\n const factors = res._embedded.factors;\n\n const factor = _.findWhere(factors, { factorType: 'call', provider: 'OKTA' });\n\n if (!factor || !factor._embedded) {\n return false;\n }\n\n return !!factor._embedded.phones.length;\n },\n },\n isUndefinedUser: {\n deps: ['securityImage'],\n fn: function(securityImage) {\n return securityImage === UNDEFINED_USER;\n },\n },\n isNewUser: {\n deps: ['securityImage'],\n fn: function(securityImage) {\n return securityImage === NEW_USER;\n },\n },\n allowRememberDevice: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.allowRememberDevice;\n },\n },\n rememberDeviceLabel: {\n deps: ['policy'],\n fn: function(policy) {\n if (policy && policy.rememberDeviceLifetimeInMinutes > 0) {\n const timeString = getMinutesString(policy.rememberDeviceLifetimeInMinutes);\n\n return loc('rememberDevice.timebased', 'login', [timeString]);\n } else if (policy && policy.rememberDeviceLifetimeInMinutes === 0) {\n return loc('rememberDevice.devicebased', 'login');\n }\n return loc('rememberDevice', 'login');\n },\n },\n rememberDeviceByDefault: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.rememberDeviceByDefault;\n },\n },\n factorsPolicyInfo: {\n deps: ['policy'],\n fn: function(policy) {\n return policy && policy.factorsPolicyInfo ? policy.factorsPolicyInfo : null;\n },\n },\n verifyCustomFactorRedirectUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || res._links.next.name !== 'redirect' || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n enrollCustomFactorRedirectUrl: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._links || !res._links.next || res._links.next.name !== 'activate' || !res._links.next.href) {\n return null;\n }\n return res._links.next.href;\n },\n },\n isFactorResultFailed: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res.factorResult === 'FAILED';\n },\n },\n factorResultErrorMessage: {\n deps: ['lastAuthResponse', 'isFactorResultFailed'],\n fn: function(res, isFactorResultFailed) {\n if (isFactorResultFailed) {\n return res.factorResultMessage || loc('oform.error.unexpected', 'login');\n }\n return null;\n },\n },\n deviceActivationStatus: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n if (!res._embedded) {\n return null;\n }\n return res._embedded.deviceActivationStatus;\n },\n },\n usingDeviceFlow: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return !!(res._embedded && res._embedded.usingDeviceFlow);\n },\n },\n userCode: {\n deps: ['lastAuthResponse'],\n fn: function(res) {\n return res?._embedded?.userCode;\n },\n },\n },\n\n parse: function(options) {\n this.settings = options.settings;\n return _.extend(_.omit(options, 'settings'), {\n languageCode: this.settings.get('languageCode'),\n userCountryCode: this.settings.get('countryCode'),\n });\n },\n});\n","const SUPPORTED_SOCIAL_IDPS = [\n 'facebook',\n 'google',\n 'linkedin',\n 'microsoft',\n 'apple',\n 'github',\n 'gitlab',\n 'yahoo',\n 'line',\n 'paypal',\n 'paypal_sandbox',\n 'salesforce',\n 'amazon',\n 'yahoojp',\n 'discord',\n 'adobe',\n 'orcid',\n 'spotify',\n 'xero',\n 'quickbooks',\n];\nexport default {\n SUPPORTED_SOCIAL_IDPS,\n};\n","/* eslint max-statements: [2, 22], complexity: [2, 12] */\n\n/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, Model, loc, internal, ModelProperty } from '@okta/courage';\nimport config from 'config/config.json';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Q from 'q';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport {\n ConfigError,\n UnsupportedBrowserError\n} from 'util/Errors';\nimport IDP from 'util/IDP';\nimport Logger from 'util/Logger';\nimport Util from 'util/Util';\nimport CountryUtil from 'util/CountryUtil';\nimport { OktaAuth } from '@okta/okta-auth-js';\nconst SharedUtil = internal.util.Util;\nconst assetBaseUrlTpl = hbs('https://global.oktacdn.com/okta-signin-widget/{{version}}');\n\nconst local: Record = {\n authClient: ['object', false, undefined],\n baseUrl: ['string', true],\n recoveryToken: ['string', false, undefined],\n stateToken: ['string', false, undefined],\n username: ['string', false],\n relayState: ['string', false],\n\n // These two settings are aliases. Setting either value will set `backToSignInUri`\n signOutLink: ['string', false], // for backward compatibility\n backToSignInLink: ['string', false], // preferred setting\n\n redirect: {\n type: 'string',\n values: ['never', 'always', 'auto'],\n value: 'auto',\n },\n\n // allows bootstrapping the Widget into a specific view such\n // as register or forgot password\n flow: ['string', false, 'default'],\n\n // Function to transform the username before passing it to the API\n // for Primary Auth, Forgot Password and Unlock Account.\n transformUsername: ['function', false],\n\n // CALLBACKS\n globalSuccessFn: 'function',\n globalErrorFn: 'function',\n processCreds: 'function',\n hooks: 'object',\n\n // IMAGES\n logo: 'string',\n logoText: ['string', false],\n helpSupportNumber: 'string',\n\n // \n // attribute to hold proxy (fake) idx response\n // to render static pages without initiating idx pipeline\n proxyIdxResponse: ['object', false],\n\n // \n // By default, state handle will be saved to session storage\n // and will be clear when terminal error or success redirect.\n // Set this flag to true if you want to override this behavior.\n // a.k.a dishonor the state handle stored in session storage.\n overrideExistingStateToken: ['boolean', false, false],\n\n // FEATURES\n 'features.router': ['boolean', true, false],\n 'features.securityImage': ['boolean', true, false],\n 'features.rememberMe': ['boolean', true, true],\n 'features.autoPush': ['boolean', true, false],\n 'features.smsRecovery': ['boolean', true, false],\n 'features.callRecovery': ['boolean', true, false],\n 'features.emailRecovery': ['boolean', false, true],\n 'features.webauthn': ['boolean', true, false],\n 'features.selfServiceUnlock': ['boolean', true, false],\n 'features.multiOptionalFactorEnroll': ['boolean', true, false],\n 'features.deviceFingerprinting': ['boolean', false, false],\n 'features.hideSignOutLinkInMFA': ['boolean', false, false],\n 'features.skipIdpFactorVerificationBtn': ['boolean', false, false],\n 'features.hideBackToSignInForReset': ['boolean', false, false],\n 'features.customExpiredPassword': ['boolean', true, false],\n 'features.registration': ['boolean', false, false],\n 'features.idpDiscovery': ['boolean', false, false],\n 'features.passwordlessAuth': ['boolean', false, false],\n 'features.showPasswordToggleOnSignInPage': ['boolean', false, false],\n 'features.trackTypingPattern': ['boolean', false, false],\n 'features.redirectByFormSubmit': ['boolean', false, false],\n 'features.useDeviceFingerprintForSecurityImage': ['boolean', false, true],\n 'features.showPasswordRequirementsAsHtmlList': ['boolean', false, false],\n 'features.mfaOnlyFlow': ['boolean', false, false],\n 'features.scrollOnError': ['boolean', false, true],\n 'features.showKeepMeSignedIn': ['boolean', false, true],\n 'features.showIdentifier': ['boolean', false, true],\n 'features.autoFocus': ['boolean', false, true],\n 'features.showSessionRevocation': ['boolean', false, false],\n 'features.disableAutocomplete': ['boolean', false, false],\n\n defaultCountryCode: ['string', false, 'US'],\n\n // I18N\n language: ['any', false], // Can be a string or a function\n i18n: ['object', false],\n\n // ASSETS\n 'assets.baseUrl': ['string', false],\n 'assets.rewrite': {\n type: 'function',\n value: _.identity,\n },\n 'assets.languages': ['array', false],\n\n // OAUTH2\n issuer: 'string',\n clientId: 'string',\n redirectUri: 'string',\n state: 'string',\n nonce: 'string',\n scopes: 'array',\n codeChallenge: 'string',\n codeChallengeMethod: ['string', false],\n oAuthTimeout: ['number', false],\n\n authScheme: ['string', false, 'OAUTH2'],\n\n // External IdPs\n idps: ['array', false, []],\n idpDisplay: {\n type: 'string',\n values: ['PRIMARY', 'SECONDARY'],\n value: 'SECONDARY',\n },\n\n // HELP LINKS\n 'helpLinks.help': 'string',\n 'helpLinks.forgotPassword': 'string',\n 'helpLinks.unlock': 'string',\n 'helpLinks.custom': 'array',\n 'helpLinks.factorPage.href': 'string',\n 'helpLinks.factorPage.text': 'string',\n\n //Custom Buttons\n customButtons: ['array', false, []],\n\n //Registration\n policyId: 'string',\n 'registration.click': 'function',\n 'registration.parseSchema': 'function',\n 'registration.preSubmit': 'function',\n 'registration.postSubmit': 'function',\n\n //Consent\n 'consent.cancel': 'function',\n\n //IDP Discovery\n 'idpDiscovery.requestContext': 'string',\n\n //Colors\n 'colors.brand': 'string',\n\n //cspNonce\n 'cspNonce': 'string',\n\n //Descriptions\n brandName: 'string',\n\n //PIV\n piv: ['object', false, {}],\n\n //Email verify callback\n otp: 'string',\n\n //Support classic engine\n useClassicEngine: ['boolean', false, false]\n};\n\nconst derived: Record = {\n backToSignInUri: {\n deps: ['backToSignInLink', 'signOutLink'],\n fn: function(backToSignInLink, signOutLink) {\n return backToSignInLink || signOutLink; // prefer backToSignInLink over signOutLink, but they are aliases\n }\n },\n showPasswordToggle: {\n deps: ['features.showPasswordToggleOnSignInPage'],\n fn: function() {\n // showPasswordToggle is for OIE only.\n // Used to default showPasswordToggleOnSignInPage to true.\n const defaultValue = true;\n const customizedValue = this.options?.features?.showPasswordToggleOnSignInPage ??\n this.options?.['features.showPasswordToggleOnSignInPage'];\n return customizedValue ?? defaultValue;\n },\n cache: true,\n },\n redirectUtilFn: {\n deps: ['features.redirectByFormSubmit'],\n fn: function(redirectByFormSubmit) {\n return redirectByFormSubmit ? Util.redirectWithFormGet.bind(Util) : SharedUtil.redirect.bind(SharedUtil);\n },\n cache: true,\n },\n supportedLanguages: {\n deps: ['i18n', 'language', 'assets.languages'],\n fn: function(i18n, language, hostedLanguages) {\n // By default, the language be automatically detected from the browser\n // Developers can specify the language. It will be added to the supportedLanguages list.\n // Developers can also provide a list of languages with hosted assets, these replace the default list\n const supportedLanguages = hostedLanguages || config.supportedLanguages;\n return _.union(\n supportedLanguages,\n _.keys(i18n),\n _.isString(language) ? [language] : []\n );\n },\n cache: true,\n },\n languageCode: {\n deps: ['language', 'supportedLanguages'],\n fn: function(language, supportedLanguages) {\n const userLanguages = BrowserFeatures.getUserLanguages();\n\n // TODO: revisit this fix - OKTA-491150\n userLanguages.forEach((val, idx) => {\n if (val === 'nl') {\n userLanguages[idx] = 'nl-NL';\n }\n else if (val === 'pt') {\n userLanguages[idx] = 'pt-BR';\n }\n });\n\n const preferred = _.clone(userLanguages);\n\n const supportedLowerCase = Util.toLower(supportedLanguages);\n\n // Any developer defined \"language\" takes highest priority:\n // As a string, i.e. 'en', 'ja', 'zh-CN'\n if (_.isString(language)) {\n preferred.unshift(language);\n } else if (_.isFunction(language)) {\n // As a callback function, which is passed the list of supported\n // languages and detected user languages. This function must return\n // a languageCode, i.e. 'en', 'ja', 'zh-CN'\n preferred.unshift(language(supportedLanguages, userLanguages));\n }\n\n // Add default language, and expand to include any language\n // codes that do not include region, dialect, etc.\n preferred.push(config.defaultLanguage);\n const expanded = Util.toLower(Util.expandLanguages(preferred));\n\n // Perform a case insensitive search - this is necessary in the case\n // of browsers like Safari\n let i;\n let supportedPos;\n\n for (i = 0; i < expanded.length; i++) {\n supportedPos = supportedLowerCase.indexOf(expanded[i]);\n if (supportedPos > -1) {\n return supportedLanguages[supportedPos];\n }\n }\n },\n },\n countryCode: {\n deps: ['defaultCountryCode'],\n fn: function(defaultCountryCode) {\n const countries = CountryUtil.getCountries();\n return Object.keys(countries).includes(defaultCountryCode)\n ? defaultCountryCode : 'US';\n },\n },\n mode: {\n deps: ['codeChallenge'],\n fn: function(codeChallenge) {\n if (codeChallenge) {\n return 'remediation';\n }\n return 'relying-party';\n }\n },\n oauth2Enabled: {\n deps: ['clientId', 'authScheme', 'authClient'],\n fn: function(clientId, authScheme, authClient) {\n if (!clientId && authClient) {\n clientId = authClient.options.clientId;\n }\n return (!!clientId) && authScheme.toLowerCase() === 'oauth2';\n },\n cache: true,\n },\n // Redirect Uri to provide in the oauth API\n oauthRedirectUri: {\n deps: ['redirectUri'],\n fn: function(redirectUri) {\n if (redirectUri) {\n return redirectUri;\n }\n\n let origin = window.location.origin;\n\n // IE8\n if (!origin) {\n const href = window.location.href;\n const path = window.location.pathname;\n\n if (path !== '') {\n origin = href.substring(0, href.lastIndexOf(path));\n }\n }\n\n return encodeURI(origin);\n },\n },\n // Adjusts the idps passed into the widget based on if they get explicit support\n configuredSocialIdps: {\n deps: ['idps'],\n fn: function(idps) {\n return _.map(idps, function(idpConfig) {\n const idp = _.clone(idpConfig);\n\n let type = idp.type && idp.type.toLowerCase();\n\n if (!(type && _.contains(IDP.SUPPORTED_SOCIAL_IDPS, type))) {\n type = 'general-idp';\n idp.text = idp.text || '{ Please provide a text value }';\n }\n\n idp.className = [\n 'social-auth-button',\n 'social-auth-' + type + '-button ',\n idp.className ? idp.className : '',\n ].join(' ');\n idp.dataAttr = 'social-auth-' + type + '-button';\n idp.i18nKey = 'socialauth.' + type + '.label';\n return idp;\n });\n },\n cache: true,\n },\n // Can support piv authentication\n hasPivCard: {\n deps: ['piv'],\n fn: function(piv) {\n return piv && piv.certAuthUrl;\n },\n cache: true,\n },\n // social auth buttons order - 'above'/'below' the primary auth form (boolean)\n socialAuthPositionTop: {\n deps: ['configuredSocialIdps', 'hasPivCard', 'idpDisplay'],\n fn: function(configuredSocialIdps, hasPivCard, idpDisplay) {\n return (!_.isEmpty(configuredSocialIdps) || hasPivCard) && idpDisplay.toUpperCase() === 'PRIMARY';\n },\n cache: true,\n },\n hasConfiguredButtons: {\n deps: ['configuredSocialIdps', 'customButtons', 'hasPivCard'],\n fn: function(configuredSocialIdps, customButtons, hasPivCard) {\n return !_.isEmpty(configuredSocialIdps) || !_.isEmpty(customButtons) || hasPivCard;\n },\n cache: true,\n }\n};\n\ntype SettingsProps = typeof local & typeof derived;\n\nexport default class Settings extends Model {\n authClient:OktaAuth;\n\n constructor(attributes, options) {\n // base class constructor will call preinitialize() and initialize() and compute derived properties\n super(attributes, options);\n\n // apply languageCode\n const authClient = this.getAuthClient();\n this.setAcceptLanguageHeader(authClient);\n }\n\n get>(attributeName: A): any {\n return Model.prototype.get.call(this, attributeName);\n }\n\n preinitialize(...args) {\n this.local = local;\n this.derived = derived;\n Model.prototype.preinitialize.apply(this, args);\n }\n\n initialize(options) {\n options = options || {};\n const { colors, authClient, flow } = options;\n let { baseUrl } = options;\n\n if (!baseUrl) {\n // infer baseUrl from the issuer\n // favor authClient API first\n if (authClient) {\n baseUrl = authClient.getIssuerOrigin();\n } else {\n // issuer can also be passed a top-level option or exist in authParams\n const { authParams } = options;\n let { issuer } = options;\n issuer = issuer || authParams?.issuer;\n baseUrl = issuer?.split('/oauth2/')[0];\n }\n this.set('baseUrl', baseUrl);\n }\n\n // If `flow` and `authClient` instance are passed to settings, set flow in auth client\n if (authClient && flow) {\n authClient.idx.setFlow(flow);\n }\n\n if (!baseUrl) {\n this.callGlobalError(new ConfigError(loc('error.required.baseUrl')));\n } else if (colors && _.isString(colors.brand) && !colors.brand.match(/^#[0-9A-Fa-f]{6}$/)) {\n this.callGlobalError(new ConfigError(loc('error.invalid.colors.brand')));\n } else if (BrowserFeatures.corsIsNotSupported()) {\n this.callGlobalError(new UnsupportedBrowserError(loc('error.unsupported.cors')));\n }\n }\n\n setAcceptLanguageHeader(authClient) {\n if (authClient) {\n authClient.http.setRequestHeader('Accept-Language', this.get('languageCode'));\n }\n }\n\n setAuthClient(authClient) {\n this.set('authClient', authClient);\n this.setAcceptLanguageHeader(authClient);\n }\n\n getAuthClient() {\n return this.get('authClient');\n }\n\n set(...args: any[]) {\n try {\n return Model.prototype.set.apply(this, args);\n } catch (e) {\n const message = e.message ? e.message : e;\n\n this.callGlobalError(new ConfigError(message));\n }\n }\n\n // Invokes the global success function. This should only be called on a\n // terminal part of the code (i.e. authStatus SUCCESS or after sending\n // a recovery email)\n callGlobalSuccess(status, data) {\n const res = _.extend(data, { status: status });\n // Defer this to ensure that our functions have rendered completely\n // before invoking their function\n\n _.defer(_.partial(this.get('globalSuccessFn'), res));\n }\n\n // Invokes the global error function. This should only be called on non\n // recoverable errors (i.e. configuration errors, browser unsupported\n // errors, etc)\n callGlobalError(err) {\n const globalErrorFn = this.get('globalErrorFn') || this.options.globalErrorFn;\n // Note: Must use \"this.options.globalErrorFn\" when they've passed invalid\n // arguments - globalErrorFn will not have been set yet\n\n if (globalErrorFn) {\n globalErrorFn(err);\n } else {\n // Only throw the error if they have not registered a globalErrorFn\n throw err;\n }\n }\n\n // Get the username by applying the transform function if it exists.\n transformUsername(username, operation) {\n const transformFn = this.get('transformUsername');\n\n if (transformFn && _.isFunction(transformFn)) {\n return transformFn(username, operation);\n }\n return username;\n }\n\n processCreds(creds) {\n const processCreds = this.get('processCreds');\n\n return Q.Promise(function(resolve) {\n if (!_.isFunction(processCreds)) {\n resolve();\n } else if (processCreds.length === 2) {\n processCreds(creds, resolve);\n } else {\n processCreds(creds);\n resolve();\n }\n });\n }\n\n parseRegistrationSchema(schema, onSuccess, onFailure) {\n const parseSchema = this.get('registration.parseSchema');\n\n //check for parseSchema callback\n if (_.isFunction(parseSchema)) {\n parseSchema(\n schema,\n function(schema) {\n onSuccess(schema);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'parseSchema';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(schema);\n }\n }\n\n preRegistrationSubmit(postData, onSuccess, onFailure) {\n const preSubmit = this.get('registration.preSubmit');\n\n //check for preSubmit callback\n if (_.isFunction(preSubmit)) {\n preSubmit(\n postData,\n function(postData) {\n onSuccess(postData);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'preSubmit';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(postData);\n }\n }\n\n postRegistrationSubmit(response, onSuccess, onFailure) {\n const postSubmit = this.get('registration.postSubmit');\n\n //check for postSubmit callback\n if (_.isFunction(postSubmit)) {\n postSubmit(\n response,\n function(response) {\n onSuccess(response);\n },\n function(error) {\n error = error || { errorSummary: loc('registration.default.callbackhook.error') };\n error['callback'] = 'postSubmit';\n onFailure(error);\n }\n );\n } else {\n //no callback\n onSuccess(response);\n }\n }\n\n // Use the parse function to transform config options to the standard\n // settings we currently support. This is a good place to deprecate old\n // option formats.\n parse(options) {\n if (options.labels || options.country) {\n Logger.deprecate('Use \"i18n\" instead of \"labels\" and \"country\"');\n const overrides = options.labels || {};\n\n _.each(options.country, function(val, key) {\n overrides['country.' + key] = val;\n });\n // Old behavior is to treat the override as a global override, so we\n // need to add these overrides to each language\n options.i18n = {};\n _.each(config.supportedLanguages, function(language) {\n options.i18n[language] = overrides;\n });\n delete options.labels;\n delete options.country;\n }\n\n // Default the assets.baseUrl to the cdn, or remove any trailing slashes\n if (!options.assets) {\n options.assets = {};\n }\n const abu = options.assets.baseUrl;\n\n if (!abu) {\n options.assets.baseUrl = assetBaseUrlTpl({ version: config.version });\n } else if (abu[abu.length - 1] === '/') {\n options.assets.baseUrl = abu.substring(0, abu.length - 1);\n }\n\n return options;\n }\n\n isDsTheme() {\n return false;\n }\n\n}\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport Enums from 'util/Enums';\nconst CAN_REMOVE_BEACON_CLS = 'can-remove-beacon';\nexport default View.extend({\n tagName: 'main',\n className: 'auth-container main-container',\n id: Enums.WIDGET_CONTAINER_ID,\n attributes: { 'data-se': 'auth-container', tabindex: '-1' },\n initialize: function(options) {\n this.listenTo(options.appState, 'change:beaconType', function(model, type) {\n this.$el.toggleClass(CAN_REMOVE_BEACON_CLS, type === 'security');\n });\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-statements: [2, 16] */\n\nimport Q from 'q';\nimport Enums from './Enums';\nconst SWAP_PAGE_TIME = 200;\nconst fn = {};\n\nfunction zoom($el, start, finish) {\n const deferred = Q.defer();\n\n $el.animate(\n {\n 'text-indent': 1,\n },\n {\n duration: 200,\n easing: 'swing',\n step: function(now, fx) {\n fx.start = start;\n fx.end = finish;\n $el.css('transform', 'scale(' + now + ', ' + now + ')');\n },\n always: function() {\n deferred.resolve($el);\n },\n }\n );\n return deferred.promise;\n}\n\nfunction rotate($el, start, finish) {\n const deferred = Q.defer();\n\n $el.animate(\n {\n 'text-indent': 1,\n },\n {\n duration: 150,\n easing: 'swing',\n step: function(now, fx) {\n fx.start = start;\n fx.end = finish;\n $el.css('transform', 'rotate(' + now + 'deg)');\n },\n always: function() {\n deferred.resolve($el);\n },\n }\n );\n return deferred.promise;\n}\n\n// Note: It is necessary to pass in a success callback because we must\n// remove the old dom node (and controller) in the same tick of the event\n// loop. Waiting for \"then\" results in a glitchy animation.\nfn.swapPages = function(options) {\n const deferred = Q.defer();\n const $parent = options.$parent;\n const $oldRoot = options.$oldRoot;\n const $newRoot = options.$newRoot;\n const success = options.success;\n const ctx = options.ctx;\n let directionClassName = 'transition-from-right';\n\n if (options.dir && options.dir === Enums.DIRECTION_BACK) {\n directionClassName = 'transition-from-left';\n }\n\n $newRoot.addClass(directionClassName);\n $parent.append($newRoot);\n\n $parent.addClass('animation-container-overflow');\n const newRootAnimations = { left: '0px', top: '0px', opacity: 1 };\n $newRoot.animate(newRootAnimations, SWAP_PAGE_TIME, function() {\n $parent.removeClass('animation-container-overflow');\n $newRoot.removeClass(directionClassName);\n const clearStyles = Object.keys(newRootAnimations).reduce((styles, attr) => ({ ...styles, [attr]: '' }), {});\n $newRoot.css(clearStyles);\n success.call(ctx);\n deferred.resolve();\n });\n\n $oldRoot.animate({ height: $newRoot.height(), opacity: 0 }, SWAP_PAGE_TIME * 0.8);\n\n return deferred.promise;\n};\n\nfn.swapBeacons = function(options) {\n const $el = options.$el;\n const swap = options.swap;\n const ctx = options.ctx;\n\n return this.implode($el)\n .then(function() {\n swap.call(ctx);\n return $el;\n })\n .then(this.explode);\n};\n\nfn.explode = function($el) {\n return zoom($el, 0, 1); //zoom in\n};\n\nfn.implode = function($el) {\n return zoom($el, 1, 0); //zoom out\n};\n\nfn.radialProgressBar = function(options) {\n const radialProgressBar = options.$el;\n const swap = options.swap;\n const circles = radialProgressBar.children();\n\n return rotate(circles, 0, 180)\n .then(function() {\n radialProgressBar.css({ clip: 'auto' });\n })\n .then(function() {\n const leftHalf = circles.eq(0);\n\n swap();\n return rotate(leftHalf, 180, 360);\n })\n .then(function() {\n //reset values to initial state\n radialProgressBar.css({ clip: 'rect(0px, 96px, 96px, 48px)' });\n circles.css({\n transform: 'rotate(0deg)',\n 'text-indent': '1px',\n });\n });\n};\n\nexport default fn;\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nexport default View.extend({\n template: hbs(\n '\\\n
            \\\n
            \\\n \\\n
            \\\n '\n ),\n\n equals: function(Beacon) {\n return Beacon && this instanceof Beacon;\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Animations from 'util/Animations';\nimport LoadingBeacon from 'v1/views/shared/LoadingBeacon';\nconst NO_BEACON_CLS = 'no-beacon';\nconst LOADING_BEACON_CLS = 'beacon-small beacon-loading';\n\nfunction isLoadingBeacon(beacon) {\n return beacon && beacon.equals(LoadingBeacon);\n}\n\nfunction removeBeacon(view) {\n // There are some timing issues with removing beacons (i.e. the case of\n // transitioning from loadingBeacon -> loadingBeacon)\n if (!view.currentBeacon) {\n return;\n }\n view.currentBeacon.remove();\n view.currentBeacon = null;\n}\n\nfunction addBeacon(view, NextBeacon, selector, options) {\n view.add(NextBeacon, {\n selector: selector,\n options: options,\n });\n view.currentBeacon = view.first();\n}\n\nfunction typeOfTransition(currentBeacon, NextBeacon, options) {\n if (!currentBeacon && !NextBeacon) {\n return 'none';\n }\n // Show Loading beacon\n if (!currentBeacon && options.loading) {\n return 'load';\n }\n // Swap/Hide Loading beacon\n if (currentBeacon && isLoadingBeacon(currentBeacon)) {\n return NextBeacon ? 'swap' : 'unload';\n }\n if (currentBeacon && currentBeacon.equals(NextBeacon, options)) {\n return 'same';\n }\n if (!currentBeacon && NextBeacon) {\n return 'add';\n }\n if (currentBeacon && !NextBeacon) {\n return 'remove';\n }\n if (currentBeacon instanceof NextBeacon) {\n return 'fade';\n }\n // If none of the above\n // then we are changing the type of beacon\n // ex. from SecurityBeacon to FactorBeacon\n return 'swap';\n}\n\nexport default class Header extends View {\n currentBeacon;\n \n preinitialize(...args) {\n this.currentBeacon = null;\n /* eslint-disable @okta/okta/no-unlocalized-text-in-templates */\n this.template = hbs(\n '\\\n \\\n
            \\\n '\n );\n /* eslint-enable @okta/okta/no-unlocalized-text-in-templates */\n View.prototype.preinitialize.apply(this, args);\n }\n\n\n // Attach a 'no-beacon' class if the security image feature\n // is not passed in to prevent the beacon from jumping.\n initialize(options) {\n if (!options.settings.get('features.securityImage')) {\n this.$el.addClass(NO_BEACON_CLS);\n // To show/hide the spinner when there is no security image,\n // listen to the appState's loading/removeLoading events.\n this.listenTo(options.appState, 'loading', this.setLoadingBeacon);\n this.listenTo(options.appState, 'removeLoading', this.removeLoadingBeacon);\n }\n }\n\n /* eslint complexity: 0 */\n setBeacon(NextBeacon, options) {\n const selector = '[data-type=\"beacon-container\"]';\n const container = this.$(selector);\n const transition = typeOfTransition(this.currentBeacon, NextBeacon, options);\n\n switch (transition) {\n case 'none':\n this.$el.addClass(NO_BEACON_CLS);\n return;\n case 'same':\n return;\n case 'add':\n this.$el.removeClass(NO_BEACON_CLS);\n addBeacon(this, NextBeacon, selector, options);\n return Animations.explode(container);\n case 'remove':\n this.$el.addClass(NO_BEACON_CLS);\n return Animations.implode(container)\n .then(() => {\n removeBeacon(this);\n })\n .done(); // TODO: can this be removed if Animations.implode returns standard ES6 Promise?\n case 'fade':\n // Other transitions are performed on the beacon container,\n // but this transition is on the content inside the beacon.\n // For a SecurityBeacon the username change will update the\n // AppState and trigger an transition to a new Becon\n // Since there is no url change this method is not called.\n // For a FactorBeacon a page refresh has occurred\n // so we execute the beacon's own transition method.\n if (!this.currentBeacon.fadeOut) {\n throw new Error('The current beacon is missing the \"fadeOut\" method');\n }\n options.animate = true;\n return this.currentBeacon\n .fadeOut()\n .then(() => {\n removeBeacon(this);\n addBeacon(this, NextBeacon, selector, options);\n })\n .done(); // TODO: can this be removed if fadeOut returns standard ES6 Promise?\n case 'swap':\n return Animations.swapBeacons({\n $el: container,\n swap: () => {\n const isLoading = isLoadingBeacon(this.currentBeacon);\n\n // Order of these calls is important for -\n // loader --> security/factor beacon swap.\n removeBeacon(this);\n if (isLoading) {\n container.removeClass(LOADING_BEACON_CLS);\n this.$el.removeClass(NO_BEACON_CLS);\n }\n addBeacon(this, NextBeacon, selector, options);\n },\n }).done(); // TODO: can this be removed if Animations.swapBeacons returns standard ES6 Promise?\n case 'load':\n // Show the loading beacon. Add a couple of classes\n // before triggering the add beacon code.\n container.addClass(LOADING_BEACON_CLS);\n addBeacon(this, NextBeacon, selector, options);\n return Animations.explode(container);\n case 'unload':\n // Hide the loading beacon.\n return this.removeLoadingBeacon();\n default:\n throw new Error('the \"' + transition + '\" is not recognized');\n }\n }\n\n // Show the loading beacon when the security image feature is not enabled.\n setLoadingBeacon(isLoading) {\n if (!isLoading || isLoadingBeacon(this.currentBeacon)) {\n return;\n }\n this.setBeacon(LoadingBeacon, { loading: true });\n }\n\n // Hide the beacon on primary auth failure. On primary auth success, setBeacon does this job.\n removeLoadingBeacon() {\n const container = this.$('[data-type=\"beacon-container\"]');\n\n return Animations.implode(container)\n .then(() => {\n removeBeacon(this);\n container.removeClass(LOADING_BEACON_CLS);\n })\n .done(); // TODO: can this be removed if Animations.implode returns standard ES6 Promise?\n }\n\n getTemplateData() {\n return this.settings.toJSON({ verbose: true });\n }\n\n getContentEl() {\n return this.$('.auth-content-inner');\n }\n}\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, $, loc, View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Animations from 'util/Animations';\n\nfunction setBackgroundImage(el, appState) {\n const imgSrc = appState.get('securityImage');\n const imgDescription = appState.get('securityImageDescription');\n const isUndefinedUser = appState.get('isUndefinedUser');\n const isNewUser = appState.get('isNewUser');\n const isSecurityImage = !isUndefinedUser && !isNewUser;\n // NOTE: The imgSrc is returned by the server so that every\n // user has a unique image. However new and undefined user states\n // are hard coded into the css and the value returned by the server\n // is ignored.\n\n el.css('background-image', '');\n el.removeClass('new-user undefined-user');\n if (isNewUser) {\n el.addClass('new-user');\n return;\n }\n if (isUndefinedUser) {\n el.addClass('undefined-user');\n return;\n }\n if (isSecurityImage) {\n // TODO: Newer versions of qtip will remove aria-describedby on their own when destroy() is called.\n el.removeAttr('aria-describedby');\n el.find('.accessibility-text').text(imgDescription);\n el.css('background-image', 'url(' + _.escape(imgSrc) + ')');\n return;\n }\n}\n\nfunction antiPhishingMessage(image, host) {\n $(window).on(\n 'resize.securityBeaconQtip',\n _.debounce(function() {\n if (image.is(':visible')) {\n image.qtip('show');\n }\n }, 300)\n );\n\n // Show the message that the user has not logged in from this device before.\n image.qtip({\n prerender: true,\n content: {\n text: loc('primaryauth.newUser.tooltip', 'login', [_.escape(host)]),\n button: loc('primaryauth.newUser.tooltip.close', 'login'),\n },\n style: {\n classes: 'okta-security-image-tooltip security-image-qtip qtip-custom qtip-shadow qtip-rounded',\n tip: { height: 12, width: 16 },\n },\n position: {\n my: 'top center',\n at: 'center',\n target: $('.auth-beacon-security'),\n adjust: { method: 'flip', scroll: false, resize: true },\n effect: false,\n },\n hide: { event: false, fixed: true },\n show: { event: false, delay: 200 },\n events: {\n move: function(event, api) {\n if (!api.elements.target.is(':visible')) {\n // Have to hide it immediately, with no effect\n api.set('hide.effect', false);\n api.hide();\n api.set('hide.effect', true);\n }\n },\n },\n });\n\n // It is necessary to delay toggle to the next render cycle, since qtip internally defers some setup tasks.\n setTimeout(() => {\n image.qtip('toggle', image.is(':visible'));\n }, 0);\n}\n\nfunction destroyAntiPhishingMessage(image) {\n image.qtip('destroy');\n $(window).off('resize.securityBeaconQtip');\n}\n\nasync function updateSecurityImage($el, appState, animate) {\n const image = $el.find('.auth-beacon-security');\n const border = $el.find('.js-auth-beacon-border');\n const hasBorder = !appState.get('isUndefinedUser');\n const hasAntiPhishing = appState.get('isNewUser');\n const radialProgressBar = $el.find('.radial-progress-bar');\n const host = appState.get('baseUrl').match(/https?:\\/\\/(.[^/]+)/)[1];\n const duration = 200;\n\n if (!animate) {\n // Do not animate the security beacon\n // This occurs when initializing the form\n setBackgroundImage(image, appState);\n border.toggleClass('auth-beacon-border', hasBorder);\n return;\n }\n\n destroyAntiPhishingMessage(image);\n\n // Animate loading the security beacon\n if (!hasBorder) {\n // This occurs when appState username is blank\n // we do not yet know if the user is recognized\n image.fadeOut(duration, function() {\n setBackgroundImage(image, appState);\n border.removeClass('auth-beacon-border');\n image.fadeIn(duration);\n });\n } else {\n // Animate loading the security beacon with a loading bar for the border\n // This occurs when the username has been checked against Okta.\n border.removeClass('auth-beacon-border');\n await Animations.radialProgressBar({\n $el: radialProgressBar,\n swap() {\n image.fadeOut(duration, () => {\n setBackgroundImage(image, appState);\n image.fadeIn(duration);\n });\n },\n });\n border.addClass('auth-beacon-border');\n if (hasAntiPhishing) {\n antiPhishingMessage(image, host);\n }\n }\n}\n\nexport default View.extend({\n template: hbs(\n '\\\n
            \\\n
            \\\n
            \\\n
            \\\n
            \\\n
            \\\n
            \\\n \\\n \\\n
            \\\n '\n ),\n className: 'js-security-beacon',\n\n initialize: function(options) {\n this.update = _.partial(updateSecurityImage, this.$el, options.appState);\n this.listenTo(options.appState, 'change:securityImage', this.update);\n this.listenTo(options.appState, 'loading', function(isLoading) {\n this.$el.toggleClass('beacon-loading', isLoading);\n this.removeAntiPhishingMessage();\n });\n this.options.appState.set('beaconType', 'security');\n\n this.listenTo(options.appState, 'navigate', this.removeAntiPhishingMessage);\n },\n\n postRender: function() {\n this.update(false);\n },\n\n equals: function(Beacon) {\n return Beacon && this instanceof Beacon;\n },\n\n removeAntiPhishingMessage: function() {\n const image = this.$el.find('.auth-beacon-security');\n\n image.qtip('destroy');\n },\n});\n","/*!\n * Copyright (c) 2018-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Enums from 'util/Enums';\nconst fn = {};\n\nconst template = function(colors) {\n return `\n#okta-sign-in.auth-container .button-primary,\n#okta-sign-in.auth-container .button-primary:active,\n#okta-sign-in.auth-container .button-primary:focus { background: ${colors.brand}; }\n#okta-sign-in.auth-container .button-primary:hover { background: ${fn.lighten(colors.brand, 0.05)}; }\n#okta-sign-in.auth-container .button.button-primary.link-button-disabled {\n background: ${colors.brand};\n opacity: 0.5;\n}\n `;\n};\n\n// visible for testing\nfn.lighten = function(hex, lum) {\n lum = lum || 0;\n hex = hex.substr(1);\n let newHex = '#';\n\n for (var i = 0; i < 3; i++) {\n let c = parseInt(hex.substr(i * 2, 2), 16);\n\n c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);\n newHex += ('00' + c).substr(c.length);\n }\n return newHex;\n};\n\nfn.addStyle = function(colors, cspNonce) {\n const css = template(colors);\n const main = document.getElementById(Enums.WIDGET_CONTAINER_ID);\n const style = document.createElement('style');\n\n style.id = Enums.WIDGET_CONFIG_COLORS_ID;\n style.type = 'text/css';\n if (cspNonce) {\n style.nonce = cspNonce;\n }\n style.appendChild(document.createTextNode(css));\n\n main.appendChild(style);\n};\n\nfn.isLoaded = function() {\n return !!document.getElementById(Enums.WIDGET_CONFIG_COLORS_ID);\n};\n\nexport default fn;\n","import Bundles from 'util/Bundles';\nimport config from 'config/config.json';\n\nfunction loadLanguage(appState, settings) {\n const languageCode = appState.get('languageCode') || settings.get('languageCode') || config.defaultLanguage;\n const i18n = settings.get('i18n');\n const assetBaseUrl = settings.get('assets.baseUrl');\n const assetRewrite = settings.get('assets.rewrite');\n const supportedLanguages = settings.get('supportedLanguages');\n\n const timeout = setTimeout(function() {\n // Trigger a spinner if we're waiting on a request for a new language.\n appState.trigger('loading', true);\n }, 200);\n\n return Bundles.loadLanguage(languageCode, i18n, {\n baseUrl: assetBaseUrl,\n rewrite: assetRewrite,\n }, supportedLanguages).then(function() {\n clearTimeout(timeout);\n appState.trigger('loading', false);\n });\n // TODO: what if load language error?\n}\n\nexport default {\n loadLanguage,\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-params: [2, 16], max-statements: [2, 20] */\n// BaseLoginRouter contains the more complicated router logic - rendering/\n// transition, etc. Most router changes should happen in LoginRouter (which is\n// responsible for adding new routes)\nimport { _, $, Backbone, Router, loc } from '@okta/courage';\nimport AppState from 'v1/models/AppState';\nimport Settings from 'models/Settings';\nimport Bundles from 'util/Bundles';\nimport Logger from 'util/Logger';\nimport AuthContainer from 'v1/views/shared/AuthContainer';\nimport Header from 'v1/views/shared/Header';\nimport SecurityBeacon from 'v1/views/shared/SecurityBeacon';\nimport Animations from 'util/Animations';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport ColorsUtil from 'util/ColorsUtil';\nimport Enums from 'util/Enums';\nimport { ConfigError } from 'util/Errors';\nimport RouterUtil from 'v1/util/RouterUtil';\nimport Util from 'util/Util';\nimport LanguageUtil from 'util/LanguageUtil';\n\nfunction isStateLessRouteHandler(router, fn) {\n return _.find(router.stateLessRouteHandlers, function(routeName) {\n return fn === router[routeName];\n });\n}\n\nfunction beaconIsAvailable(Beacon, settings) {\n if (!Beacon) {\n return false;\n }\n if (Beacon === SecurityBeacon) {\n return settings.get('features.securityImage');\n }\n return true;\n}\n\nexport default Router.extend({\n Events: Backbone.Events,\n\n initialize: function(options) {\n // Create a default success and/or error handler if\n // one is not provided.\n if (!options.globalSuccessFn) {\n options.globalSuccessFn = function() {};\n }\n if (!options.globalErrorFn) {\n options.globalErrorFn = function(err) {\n Logger.error(err);\n };\n }\n\n this.settings = new Settings(_.omit(options, 'el'), { parse: true });\n\n if (!options.el) {\n this.settings.callGlobalError(new ConfigError(loc('error.required.el')));\n }\n\n $('body > div').on('click', function() {\n // OKTA-69769 Tooltip wont close on iPhone/iPad\n // Registering a click handler on the first div\n // allows a tap that falls outside the tooltip\n // to be registered as a tap by iOS\n // and then the open tooltip will lose focus and close.\n });\n\n this.appState = new AppState(\n {\n baseUrl: this.settings.get('baseUrl'),\n settings: this.settings,\n },\n { parse: true }\n );\n\n const wrapper = new AuthContainer({ appState: this.appState });\n\n $(options.el).append(wrapper.render().$el);\n this.el = `#${Enums.WIDGET_CONTAINER_ID}`;\n\n this.header = new Header({\n el: this.el,\n appState: this.appState,\n settings: this.settings,\n });\n\n // Hide until unitial render\n this.hide();\n\n this.listenTo(this.appState, 'change:transactionError', function(appState, err) {\n RouterUtil.routeAfterAuthStatusChangeError(this, err);\n });\n\n this.listenTo(this.appState, 'change:transaction', function(appState, trans) {\n RouterUtil.routeAfterAuthStatusChange(this, trans.data);\n });\n\n this.listenTo(this.appState, 'navigate', function(url) {\n this.navigate(url, { trigger: true });\n });\n },\n\n execute: function(cb, args) {\n const recoveryToken = this.settings.get('recoveryToken');\n // Recovery flow with a token passed through widget settings\n\n if (recoveryToken) {\n this.settings.unset('recoveryToken');\n this.navigate(RouterUtil.createRecoveryUrl(recoveryToken), { trigger: true });\n return;\n }\n\n // Refresh flow with a stateToken passed through widget settings\n const stateToken = this.settings.get('stateToken');\n\n if (stateToken) {\n this.settings.unset('stateToken');\n this.navigate(RouterUtil.createRefreshUrl(stateToken), { trigger: true });\n return;\n }\n\n // Normal flow - we've either navigated to a stateless page, or are\n // in the middle of an auth flow\n const trans = this.appState.get('transaction');\n\n if ((trans && trans.data) || isStateLessRouteHandler(this, cb)) {\n cb.apply(this, args);\n return;\n }\n\n // StateToken cookie exists on page load, and we are on a stateful url\n if (this.settings.getAuthClient().tx.exists()) {\n this.navigate(RouterUtil.createRefreshUrl(), { trigger: true });\n return;\n }\n\n // We've hit a page that requires state, but have no stateToken - redirect\n // back to primary auth\n this.navigate('', { trigger: true });\n },\n\n // Overriding the default navigate method to allow the widget consumer\n // to \"turn off\" routing - if features.router is false, the browser\n // location bar will not update when the router navigates\n navigate: function(fragment, options) {\n if (this.settings.get('features.router')) {\n return Router.prototype.navigate.apply(this, arguments);\n }\n if (options && options.trigger) {\n return Backbone.history.loadUrl(fragment);\n }\n },\n\n render: function(Controller, options) {\n options || (options = {});\n\n let Beacon = options.Beacon;\n\n const controllerOptions = _.extend({ settings: this.settings, appState: this.appState }, _.omit(options, 'Beacon'));\n\n // Since we have a wrapper view, render our wrapper and use its content\n // element as our new el.\n // Note: Render it here because we know dom is ready at this point\n if (!this.header.rendered()) {\n this.el = this.header.render().getContentEl();\n }\n\n // If we need to load a language (or apply custom i18n overrides), do\n // this now and re-run render after it's finished.\n if (!Bundles.isLoaded(this.appState.get('languageCode'))) {\n return LanguageUtil.loadLanguage(this.appState, this.settings)\n .then(_.bind(this.render, this, Controller, options));\n }\n\n // Load the custom colors only on the first render\n if (this.settings.get('colors.brand') && !ColorsUtil.isLoaded()) {\n const colors = {\n brand: this.settings.get('colors.brand'),\n };\n const cspNonce = this.settings.get('cspNonce');\n\n ColorsUtil.addStyle(colors, cspNonce);\n }\n\n const oldController = this.controller;\n\n this.controller = new Controller(controllerOptions);\n\n // Bubble up all controller events\n this.listenTo(this.controller, 'all', this.trigger);\n\n // First run fetchInitialData, in case the next controller needs data\n // before it's initial render. This will leave the current page in a\n // loading state.\n return this.controller\n .fetchInitialData()\n .then(() => {\n // Beacon transition occurs in parallel to page swap\n if (!beaconIsAvailable(Beacon, this.settings)) {\n Beacon = null;\n }\n this.header.setBeacon(Beacon, controllerOptions);\n\n // Show before initial render\n this.show();\n\n this.controller.render();\n\n if (!oldController) {\n this.el.append(this.controller.el);\n this.controller.postRenderAnimation();\n return;\n }\n\n return Animations.swapPages({\n $parent: this.el,\n $oldRoot: oldController.$el,\n $newRoot: this.controller.$el,\n dir: oldController.state.get('navigateDir'),\n ctx: this,\n success: function() {\n const flashError = this.appState.get('flashError');\n const model = this.controller.model;\n\n oldController.remove();\n oldController.$el.remove();\n this.controller.postRenderAnimation();\n if (flashError) {\n let errorSummary;\n const isTerminalError = flashError.is && flashError.is('terminal');\n if (isTerminalError) {\n errorSummary = flashError.errorDetails.errorSummary;\n } else {\n errorSummary = loc((this.settings.get('features.mfaOnlyFlow')) ?\n 'error.mfa.only.expired.session' : 'error.expired.session');\n }\n model.trigger('error', model, {\n responseJSON: {\n errorSummary\n },\n });\n this.appState.unset('flashError');\n Util.triggerAfterError(this.controller, flashError);\n }\n },\n });\n })\n .catch(function() {\n // OKTA-69665 - if an error occurs in fetchInitialData, we're left in\n // a state with two active controllers. Therefore, we clean up the\n // old one. Note: This explicitly handles the invalid token case -\n // if we get some other type of error which doesn't force a redirect,\n // we will probably be left in a bad state. I.e. old controller is\n // dropped and new controller is not rendered.\n if (oldController) {\n oldController.remove();\n oldController.$el.remove();\n }\n });\n },\n\n start: function() {\n let pushState = false;\n\n // Support for browser's back button.\n if (window.addEventListener && this.settings.get('features.router')) {\n window.addEventListener('popstate', e => {\n if (this.controller.back) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.controller.back();\n }\n });\n pushState = BrowserFeatures.supportsPushState();\n }\n Router.prototype.start.call(this, { pushState: pushState });\n },\n\n hide: function() {\n this.header.$el.hide();\n },\n\n show: function() {\n this.header.$el.show();\n },\n\n remove: function() {\n if (this.controller) {\n this.controller.remove();\n }\n this.header.$el.remove();\n Bundles.remove();\n Backbone.history.stop();\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-statements: [2, 16], complexity: [2, 10] */\nimport { _, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport RouterUtil from 'v1/util/RouterUtil';\nconst pushTitleTpl = hbs('{{factorName}} ({{{deviceName}}})');\n\n// deviceName is escaped on BaseForm (see BaseForm's template)\n\nconst action = function(model) {\n let factorIndex;\n const factorType = model.get('factorType');\n const factorsList = this.options.appState.get('factors');\n\n if (factorsList.hasMultipleFactorsOfSameType(factorType)) {\n factorIndex = factorsList.getFactorIndex(factorType, model.get('id'));\n }\n const url = RouterUtil.createVerifyUrl(model.get('provider'), factorType, factorIndex);\n const self = this;\n\n this.options.appState.trigger('factorSwitched');\n this.model.manageTransaction(function(transaction, setTransaction) {\n // FACTOR_CHALLENGE does not have a prev link\n if (transaction.status === 'FACTOR_CHALLENGE') {\n this.options.appState.set('trapMfaRequiredResponse', true);\n }\n if (transaction.status === 'MFA_CHALLENGE' && transaction.prev) {\n this.options.appState.set('trapMfaRequiredResponse', true);\n return transaction.prev().then(function(trans) {\n self.trigger('options:toggle');\n setTransaction(trans);\n self.options.appState.trigger('navigate', url);\n });\n } else {\n self.trigger('options:toggle');\n self.options.appState.trigger('navigate', url);\n }\n });\n};\n\nconst dropdownOptions = {\n TITLE: {\n title: _.partial(loc, 'mfa.factors.dropdown.title', 'login'),\n className: 'dropdown-list-title',\n disabled: true,\n },\n\n OKTA_VERIFY: {\n icon: 'factor-icon mfa-okta-verify-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n OKTA_VERIFY_PUSH: {\n icon: 'factor-icon mfa-okta-verify-30',\n className: 'factor-option',\n title: function() {\n return pushTitleTpl({\n factorName: this.model.get('factorLabel'),\n deviceName: this.model.get('deviceName'),\n });\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n GOOGLE_AUTH: {\n icon: 'factor-icon mfa-google-auth-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n CUSTOM_HOTP: {\n icon: 'factor-icon mfa-hotp-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n SYMANTEC_VIP: {\n icon: 'factor-icon mfa-symantec-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n RSA_SECURID: {\n icon: 'factor-icon mfa-rsa-30',\n className: 'factor-option',\n title: _.partial(loc, 'factor.totpHard.rsaSecurId', 'login'),\n action: function() {\n action.call(this, this.model);\n },\n },\n\n ON_PREM: {\n icon: 'factor-icon mfa-onprem-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n DUO: {\n icon: 'factor-icon mfa-duo-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n DUO_PUSH: {\n icon: 'duo-push-16',\n className: 'suboption factor-option',\n // TODO: add phone number here\n title: _.partial(loc, 'mfa.duoSecurity.push', 'login', ['XXX-XXX-7890']),\n },\n\n DUO_SMS: {\n icon: 'duo-sms-16',\n className: 'suboption factor-option',\n // TODO: add phone number here\n title: _.partial(loc, 'mfa.duoSecurity.sms', 'login', ['XXX-XXX-7890']),\n },\n\n DUO_CALL: {\n icon: 'duo-call-16',\n className: 'suboption factor-option',\n // TODO: add phone number here\n title: _.partial(loc, 'mfa.duoSecurity.call', 'login', ['XXX-XXX-7890']),\n },\n\n YUBIKEY: {\n icon: 'factor-icon mfa-yubikey-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n SMS: {\n icon: 'factor-icon mfa-sms-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n CALL: {\n icon: 'factor-icon mfa-call-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n QUESTION: {\n icon: 'factor-icon mfa-question-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n PASSWORD: {\n icon: 'factor-icon mfa-password-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n WINDOWS_HELLO: {\n icon: 'factor-icon mfa-windows-hello-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n U2F: {\n icon: 'factor-icon mfa-u2f-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n WEBAUTHN: {\n icon: 'factor-icon mfa-webauthn-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n EMAIL: {\n icon: 'factor-icon mfa-email-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n GENERIC_SAML: {\n icon: 'factor-icon mfa-custom-factor-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n GENERIC_OIDC: {\n icon: 'factor-icon mfa-custom-factor-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n\n CUSTOM_CLAIMS: {\n icon: 'factor-icon mfa-custom-factor-30',\n className: 'factor-option',\n title: function() {\n return this.model.get('factorLabel');\n },\n action: function() {\n action.call(this, this.model);\n },\n },\n};\nexport default {\n getDropdownOption: function(factorName) {\n return dropdownOptions[factorName];\n },\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _, $, loc, internal } from '@okta/courage';\nimport FactorUtil from 'util/FactorUtil';\nimport Factor from 'v1//models/Factor';\nimport FactorsDropDownOptions from './FactorsDropDownOptions';\nconst { BaseDropDown } = internal.views.components;\n\n$(document).click(function(e) {\n const $target = $(e.target);\n const isDropdown = $target.closest('.option-selected').length > 0 && $target.closest('.dropdown').length > 0;\n\n if (!isDropdown) {\n $('.dropdown .options').hide();\n $('.dropdown a.option-selected').attr('aria-expanded', false);\n }\n});\n\nexport default BaseDropDown.extend({\n className: 'bg-helper icon-button',\n screenReaderText: function() {\n const factors = this.options.appState.get('factors');\n let factor;\n let factorLabel;\n\n if (factors) {\n factor = FactorUtil.findFactorInFactorsArray(factors, this.options.provider, this.options.factorType);\n } else {\n factor = new Factor.Model(this.options.appState.get('factor'), this.toJSON());\n }\n factorLabel = factor.get('factorLabel');\n return loc('mfa.factors.dropdown.sr.text', 'login', [factorLabel]);\n },\n events: {\n 'click a.option-selected': function(e) {\n e.preventDefault();\n if (_.result(this, 'disabled')) {\n e.stopPropagation();\n } else {\n const expanded = this.$('.options').toggle().is(':visible');\n\n this.$('a.option-selected').attr('aria-expanded', expanded);\n if (expanded) {\n this.$('#okta-dropdown-options').find('li.factor-option:first a').focus();\n }\n }\n },\n 'click .dropdown-disabled': function(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n },\n initialize: function() {\n this.addOption(FactorsDropDownOptions.getDropdownOption('TITLE'));\n const factorsList = this.options.appState.get('factors');\n const multiplePushFactors = factorsList.hasMultipleFactorsOfSameType('push');\n\n factorsList.each(function(factor) {\n // Do not add okta totp if there are multiple okta push (each push will have an inline totp)\n if (!(factor.get('factorType') === 'token:software:totp' && multiplePushFactors)) {\n this.addOption(FactorsDropDownOptions.getDropdownOption(factor.get('factorName')), { model: factor });\n this.listenTo(this.last(), 'options:toggle', function() {\n this.$('.options').hide();\n this.$('a.option-selected').attr('aria-expanded', false);\n });\n }\n }, this);\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint complexity: [2, 8] */\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport Factor from 'v1/models/Factor';\nimport Q from 'q';\nimport FactorUtil from 'util/FactorUtil';\nimport FactorsDropDown from 'v1/views/mfa-verify/dropdown/FactorsDropDown';\nexport default View.extend({\n template: hbs(\n '\\\n
            \\\n
            \\\n
            \\\n
            \\\n \\\n
            \\\n
            \\\n '\n ),\n\n events: {\n 'click .auth-beacon-factor': function(e) {\n e.preventDefault();\n e.stopPropagation();\n const expanded = this.$('.dropdown .options').toggle().is(':visible');\n\n this.$('a.option-selected').attr('aria-expanded', expanded);\n if (expanded) {\n this.$('#okta-dropdown-options').find('li.factor-option:first a').focus();\n }\n },\n },\n\n initialize: function() {\n this.options.appState.set('beaconType', 'factor');\n },\n\n getTemplateData: function() {\n const factors = this.options.appState.get('factors');\n let factor;\n let className;\n\n if (factors) {\n factor = FactorUtil.findFactorInFactorsArray(factors, this.options.provider, this.options.factorType);\n } else {\n factor = new Factor.Model(this.options.appState.get('factor'));\n }\n className = factor.get('iconClassName');\n return { className: className || '' };\n },\n\n postRender: function() {\n if (this.options.animate) {\n this.$('.auth-beacon-factor').fadeIn(200);\n }\n const appState = this.options.appState;\n\n if (appState.get('hasMultipleFactorsAvailable')) {\n this.add(FactorsDropDown, '[data-type=\"factor-types-dropdown\"]');\n }\n },\n\n fadeOut: function() {\n const deferred = Q.defer();\n\n this.$('.auth-beacon-factor').fadeOut(200, function() {\n deferred.resolve();\n });\n return deferred.promise;\n },\n\n equals: function(Beacon, options) {\n return (\n Beacon &&\n this instanceof Beacon &&\n options.provider === this.options.provider &&\n (options.factorType === this.options.factorType ||\n (FactorUtil.isOktaVerify(options.provider, options.factorType) &&\n FactorUtil.isOktaVerify(this.options.provider, this.options.factorType)))\n );\n },\n});\n","/*!\n * Copyright (c) 2019, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\nexport default View.extend({\n className: 'piv-beacon',\n template: hbs(\n '\\\n
            \\\n
            \\\n
            \\\n
            \\\n \\\n
            \\\n '\n ),\n\n equals: function(Beacon) {\n return Beacon && this instanceof Beacon;\n },\n});\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-params: 0 */\nimport AccountUnlockedController from 'v1/controllers/AccountUnlockedController';\nimport ActivateTotpController from 'v1/controllers/ActivateTotpController';\nimport AdminConsentRequiredController from 'v1/controllers/AdminConsentRequiredController';\nimport BarcodePushController from 'v1/controllers/BarcodePushController';\nimport BarcodeTotpController from 'v1/controllers/BarcodeTotpController';\nimport ConsentRequiredController from 'v1/controllers/ConsentRequiredController';\nimport CustomPasswordExpiredController from 'v1/controllers/CustomPasswordExpiredController';\nimport DeviceActivateController from 'v1/controllers/DeviceActivateController';\nimport DeviceActivateTerminalController from 'v1/controllers/DeviceActivateTerminalController';\nimport EnrollActivateCustomFactorController from 'v1/controllers/EnrollActivateCustomFactorController';\nimport EnrollActivateEmailController from 'v1/controllers/EnrollActivateEmailController';\nimport EnrollCallAndSmsController from 'v1/controllers/EnrollCallAndSmsController';\nimport EnrollChoicesController from 'v1/controllers/EnrollChoicesController';\nimport EnrollCustomFactorController from 'v1/controllers/EnrollCustomFactorController';\nimport EnrollDuoController from 'v1/controllers/EnrollDuoController';\nimport EnrollEmailController from 'v1/controllers/EnrollEmailController';\nimport EnrollHotpController from 'v1/controllers/EnrollHotpController';\nimport EnrollOnPremController from 'v1/controllers/EnrollOnPremController';\nimport EnrollPasswordController from 'v1/controllers/EnrollPasswordController';\nimport EnrollQuestionController from 'v1/controllers/EnrollQuestionController';\nimport EnrollSymantecVipController from 'v1/controllers/EnrollSymantecVipController';\nimport EnrollTotpController from 'v1/controllers/EnrollTotpController';\nimport EnrollU2FController from 'v1/controllers/EnrollU2FController';\nimport EnrollUserController from 'v1/controllers/EnrollUserController';\nimport EnrollWebauthnController from 'v1/controllers/EnrollWebauthnController';\nimport EnrollWindowsHelloController from 'v1/controllers/EnrollWindowsHelloController';\nimport EnrollYubikeyController from 'v1/controllers/EnrollYubikeyController';\nimport EnrollmentLinkSentController from 'v1/controllers/EnrollmentLinkSentController';\nimport EnterPasscodePushFlowController from 'v1/controllers/EnterPasscodePushFlowController';\nimport ForgotPasswordController from 'v1/controllers/ForgotPasswordController';\nimport IDPDiscoveryController from 'v1/controllers/IDPDiscoveryController';\nimport ForceIDPDiscoveryController from 'v1/controllers/ForceIDPDiscoveryController';\nimport ManualSetupPushController from 'v1/controllers/ManualSetupPushController';\nimport ManualSetupTotpController from 'v1/controllers/ManualSetupTotpController';\nimport MfaVerifyController from 'v1/controllers/MfaVerifyController';\nimport PasswordExpiredController from 'v1/controllers/PasswordExpiredController';\nimport PasswordResetController from 'v1/controllers/PasswordResetController';\nimport PollController from 'v1/controllers/PollController';\nimport PrimaryAuthController from 'v1/controllers/PrimaryAuthController';\nimport PwdResetEmailSentController from 'v1/controllers/PwdResetEmailSentController';\nimport RecoveryChallengeController from 'v1/controllers/RecoveryChallengeController';\nimport RecoveryLoadingController from 'v1/controllers/RecoveryLoadingController';\nimport RecoveryQuestionController from 'v1/controllers/RecoveryQuestionController';\nimport RefreshAuthStateController from 'v1/controllers/RefreshAuthStateController';\nimport RegistrationCompleteController from 'v1/controllers/RegistrationCompleteController';\nimport RegistrationController from 'v1/controllers/RegistrationController';\nimport UnlockAccountController from 'v1/controllers/UnlockAccountController';\nimport UnlockEmailSentController from 'v1/controllers/UnlockEmailSentController';\nimport VerifyCustomFactorController from 'v1/controllers/VerifyCustomFactorController';\nimport VerifyDuoController from 'v1/controllers/VerifyDuoController';\nimport VerifyPIVController from 'v1/controllers/VerifyPIVController';\nimport VerifyU2FController from 'v1/controllers/VerifyU2FController';\nimport VerifyWebauthnController from 'v1/controllers/VerifyWebauthnController';\nimport VerifyWindowsHelloController from 'v1/controllers/VerifyWindowsHelloController';\nimport ErrorStateController from 'v1/controllers/ErrorStateController';\nimport BaseLoginRouter from 'v1/BaseLoginRouter';\nimport FactorBeacon from 'v1/views/shared/FactorBeacon';\nimport PIVBeacon from 'v1/views/shared/PIVBeacon';\nimport SecurityBeacon from 'v1/views/shared/SecurityBeacon';\n\nimport Enums from 'util/Enums';\n\nexport default BaseLoginRouter.extend({\n routes: {\n '': 'defaultAuth',\n signin: 'primaryAuth',\n 'signin/okta/:username': 'primaryAuth',\n 'signin/verify/duo/web': 'verifyDuo',\n 'signin/verify/piv': 'verifyPIV',\n 'signin/poll': 'poll',\n 'signin/verify/fido/webauthn': 'verifyWebauthn',\n 'signin/verify/webauthn': 'verifyWebauthn',\n 'signin/verify/fido/u2f': 'verifyU2F',\n 'signin/verify/u2f': 'verifyU2F',\n 'signin/verify/generic_saml/assertion:saml2': 'verifySAMLFactor',\n 'signin/verify/generic_oidc/assertion:oidc': 'verifyOIDCFactor',\n 'signin/verify/custom/claims_provider': 'verifyClaimsFactor',\n 'signin/verify/:factorType': 'verifyNoProvider',\n 'signin/verify/:provider/:factorType(/:factorIndex)': 'verify',\n 'signin/enroll': 'enrollChoices',\n 'signin/enroll/duo/web': 'enrollDuo',\n 'signin/enroll/okta/question': 'enrollQuestion',\n 'signin/enroll/okta/password': 'enrollPassword',\n 'signin/enroll/okta/sms': 'enrollSms',\n 'signin/enroll/okta/call': 'enrollCall',\n 'signin/enroll/okta/email': 'enrollEmail',\n 'signin/enroll-activate/okta/sms': 'enrollSms',\n 'signin/enroll-activate/okta/call': 'enrollCall',\n 'signin/enroll/rsa/token': 'enrollRsa',\n 'signin/enroll/del_oath/token': 'enrollOnPrem',\n 'signin/enroll/symantec/token': 'enrollSymantecVip',\n 'signin/enroll/yubico/token:hardware': 'enrollYubikey',\n 'signin/enroll/fido/webauthn': 'enrollWebauthn',\n 'signin/enroll/fido/u2f': 'enrollU2F',\n 'signin/enroll/generic_saml/assertion:saml2': 'enrollSAMLFactor',\n 'signin/enroll/generic_oidc/assertion:oidc': 'enrollOIDCFactor',\n 'signin/enroll/custom/claims_provider': 'enrollClaimsFactor',\n 'signin/enroll/custom/token:hotp': 'enrollHotpFactor',\n 'signin/enroll/:provider/:factorType': 'enrollTotpFactor',\n 'signin/enroll-activate/okta/email': 'enrollActivateEmail',\n 'signin/enroll-activate/okta/push': 'scanBarcodePushFactor',\n 'signin/enroll-activate/okta/push/manual': 'manualSetupPushFactor',\n 'signin/enroll-activate/okta/push/sent': 'activationLinkSent',\n 'signin/enroll-activate/okta/token:software:totp/passcode': 'enterPasscodeInPushEnrollmentFlow',\n 'signin/enroll-activate/custom/claims_provider': 'enrollActivateClaimsFactor',\n 'signin/enroll-activate/:provider/:factorType': 'scanBarcodeTotpFactor',\n 'signin/enroll-activate/:provider/:factorType/activate': 'activateTotpFactor',\n 'signin/enroll-activate/:provider/:factorType/manual': 'manualSetupTotpFactor',\n 'signin/password-expired': 'passwordExpired',\n 'signin/custom-password-expired': 'customPasswordExpired',\n 'signin/forgot-password': 'forgotPassword',\n 'signin/recovery-challenge': 'recoveryChallenge',\n 'signin/recovery-emailed': 'recoveryEmailSent',\n 'signin/recovery-question': 'recoveryQuestion',\n 'signin/password-reset': 'passwordReset',\n 'signin/reset-password/:token': 'recoveryLoading',\n 'signin/user-unlock/:token': 'recoveryLoading',\n 'signin/recovery/:token': 'recoveryLoading',\n 'signin/unlock-emailed': 'unlockEmailSent',\n 'signin/unlock': 'unlockAccount',\n 'signin/account-unlocked': 'accountUnlocked',\n 'signin/refresh-auth-state(/:token)': 'refreshAuthState',\n 'signin/register': 'register',\n 'signin/register-complete': 'registerComplete',\n 'signin/error': 'errorState',\n 'signin/consent': 'consentRequired',\n 'signin/admin-consent': 'adminConsentRequired',\n 'signin/enroll-user': 'enrollUser',\n 'signin/device-activate-complete': 'deviceActivateComplete',\n 'signin/device-activate': 'deviceActivate',\n 'signin/idp-discovery-check': 'idpDiscoveryCheck',\n '*wildcard': 'defaultAuth',\n },\n\n // Route handlers that do not require a stateToken. If the page is refreshed,\n // these functions will not require a status call to refresh the stateToken.\n stateLessRouteHandlers: [\n 'defaultAuth',\n 'idpDiscovery',\n 'primaryAuth',\n 'forgotPassword',\n 'recoveryLoading',\n 'unlockAccount',\n 'refreshAuthState',\n 'register',\n 'registerComplete',\n 'errorState',\n 'verifyPIV',\n ],\n\n defaultAuth: function() {\n if (window.location.hash === `#${Enums.WIDGET_CONTAINER_ID}`) {\n document.getElementById(Enums.WIDGET_CONTAINER_ID).focus();\n return;\n }\n if (this.settings.get('features.idpDiscovery')) {\n this.idpDiscovery();\n } else {\n this.primaryAuth();\n }\n },\n\n idpDiscoveryCheck: function() {\n this.render(ForceIDPDiscoveryController, { Beacon: SecurityBeacon });\n },\n\n idpDiscovery: function() {\n this.render(IDPDiscoveryController, { Beacon: SecurityBeacon });\n },\n\n primaryAuth: function(username) {\n this.render(PrimaryAuthController, {\n Beacon: SecurityBeacon,\n username\n });\n },\n\n verifyDuo: function() {\n this.render(VerifyDuoController, {\n provider: 'DUO',\n factorType: 'web',\n Beacon: FactorBeacon,\n });\n },\n\n verifyPIV: function() {\n this.render(VerifyPIVController, { Beacon: PIVBeacon });\n },\n\n poll: function() {\n this.render(PollController);\n },\n\n verifyWebauthn: function() {\n if (this.settings.get('features.webauthn')) {\n this.render(VerifyWebauthnController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n } else {\n this.render(VerifyWindowsHelloController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n }\n },\n\n verifyU2F: function() {\n this.render(VerifyU2FController, {\n provider: 'FIDO',\n factorType: 'u2f',\n Beacon: FactorBeacon,\n });\n },\n\n verifySAMLFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'GENERIC_SAML',\n factorType: 'assertion:saml2',\n Beacon: FactorBeacon,\n });\n },\n\n verifyOIDCFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'GENERIC_OIDC',\n factorType: 'assertion:oidc',\n Beacon: FactorBeacon,\n });\n },\n\n verifyClaimsFactor: function() {\n this.render(VerifyCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n verify: function(provider, factorType, factorIndex) {\n this.render(MfaVerifyController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n factorIndex: factorIndex,\n Beacon: FactorBeacon,\n });\n },\n\n verifyNoProvider: function(factorType) {\n this.render(MfaVerifyController, {\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n enrollChoices: function() {\n this.render(EnrollChoicesController, { Beacon: SecurityBeacon });\n },\n\n enrollDuo: function() {\n this.render(EnrollDuoController, {\n provider: 'DUO',\n factorType: 'web',\n Beacon: FactorBeacon,\n });\n },\n\n enrollQuestion: function() {\n this.render(EnrollQuestionController, {\n provider: 'OKTA',\n factorType: 'question',\n Beacon: FactorBeacon,\n });\n },\n\n enrollPassword: function() {\n this.render(EnrollPasswordController, {\n provider: 'OKTA',\n factorType: 'password',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSms: function() {\n this.render(EnrollCallAndSmsController, {\n provider: 'OKTA',\n factorType: 'sms',\n Beacon: FactorBeacon,\n });\n },\n\n enrollCall: function() {\n this.render(EnrollCallAndSmsController, {\n provider: 'OKTA',\n factorType: 'call',\n Beacon: FactorBeacon,\n });\n },\n\n enrollEmail: function() {\n this.render(EnrollEmailController, {\n provider: 'OKTA',\n factorType: 'email',\n Beacon: FactorBeacon,\n });\n },\n\n enrollActivateEmail: function() {\n this.render(EnrollActivateEmailController, {\n provider: 'OKTA',\n factorType: 'email',\n Beacon: FactorBeacon,\n });\n },\n\n enrollRsa: function() {\n this.render(EnrollOnPremController, {\n provider: 'RSA',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollOnPrem: function() {\n this.render(EnrollOnPremController, {\n provider: 'DEL_OATH',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSymantecVip: function() {\n this.render(EnrollSymantecVipController, {\n provider: 'SYMANTEC',\n factorType: 'token',\n Beacon: FactorBeacon,\n });\n },\n\n enrollYubikey: function() {\n this.render(EnrollYubikeyController, {\n provider: 'YUBICO',\n factorType: 'token:hardware',\n Beacon: FactorBeacon,\n });\n },\n\n enrollSAMLFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'GENERIC_SAML',\n factorType: 'assertion:saml2',\n Beacon: FactorBeacon,\n });\n },\n\n enrollOIDCFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'GENERIC_OIDC',\n factorType: 'assertion:oidc',\n Beacon: FactorBeacon,\n });\n },\n\n enrollClaimsFactor: function() {\n this.render(EnrollCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n enrollActivateClaimsFactor: function() {\n this.render(EnrollActivateCustomFactorController, {\n provider: 'CUSTOM',\n factorType: 'claims_provider',\n Beacon: FactorBeacon,\n });\n },\n\n enrollTotpFactor: function(provider, factorType) {\n this.render(EnrollTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n enrollHotpFactor: function() {\n this.render(EnrollHotpController, {\n provider: 'CUSTOM',\n factorType: 'token:hotp',\n Beacon: FactorBeacon,\n });\n },\n\n enrollWebauthn: function() {\n if (this.settings.get('features.webauthn')) {\n this.render(EnrollWebauthnController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n } else {\n this.render(EnrollWindowsHelloController, {\n provider: 'FIDO',\n factorType: 'webauthn',\n Beacon: FactorBeacon,\n });\n }\n },\n\n enrollU2F: function() {\n this.render(EnrollU2FController, {\n provider: 'FIDO',\n factorType: 'u2f',\n Beacon: FactorBeacon,\n });\n },\n\n scanBarcodeTotpFactor: function(provider, factorType) {\n this.render(BarcodeTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n scanBarcodePushFactor: function() {\n this.render(BarcodePushController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n activateTotpFactor: function(provider, factorType) {\n this.render(ActivateTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n manualSetupTotpFactor: function(provider, factorType) {\n this.render(ManualSetupTotpController, {\n provider: provider.toUpperCase(),\n factorType: factorType,\n Beacon: FactorBeacon,\n });\n },\n\n manualSetupPushFactor: function() {\n this.render(ManualSetupPushController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n activationLinkSent: function() {\n this.render(EnrollmentLinkSentController, {\n provider: 'OKTA',\n factorType: 'push',\n Beacon: FactorBeacon,\n });\n },\n\n enterPasscodeInPushEnrollmentFlow: function() {\n this.render(EnterPasscodePushFlowController, {\n provider: 'OKTA',\n factorType: 'token:software:totp',\n Beacon: FactorBeacon,\n });\n },\n\n passwordExpired: function() {\n this.render(PasswordExpiredController, { Beacon: SecurityBeacon });\n },\n\n customPasswordExpired: function() {\n this.render(CustomPasswordExpiredController, { Beacon: SecurityBeacon });\n },\n\n forgotPassword: function() {\n this.render(ForgotPasswordController);\n },\n\n recoveryChallenge: function() {\n this.render(RecoveryChallengeController, { Beacon: SecurityBeacon });\n },\n\n recoveryEmailSent: function() {\n this.render(PwdResetEmailSentController, { Beacon: SecurityBeacon });\n },\n\n unlockEmailSent: function() {\n this.render(UnlockEmailSentController, { Beacon: SecurityBeacon });\n },\n\n recoveryQuestion: function() {\n this.render(RecoveryQuestionController, { Beacon: SecurityBeacon });\n },\n\n passwordReset: function() {\n this.render(PasswordResetController, { Beacon: SecurityBeacon });\n },\n\n recoveryLoading: function(token) {\n this.render(RecoveryLoadingController, {\n token: token,\n Beacon: SecurityBeacon,\n });\n },\n\n unlockAccount: function() {\n this.render(UnlockAccountController);\n },\n\n accountUnlocked: function() {\n this.render(AccountUnlockedController, { Beacon: SecurityBeacon });\n },\n\n refreshAuthState: function(token) {\n this.render(RefreshAuthStateController, {\n token: token,\n Beacon: SecurityBeacon,\n });\n },\n\n register: function() {\n this.render(RegistrationController);\n },\n\n registerComplete: function() {\n this.render(RegistrationCompleteController);\n },\n\n errorState: function() {\n this.render(ErrorStateController, { Beacon: SecurityBeacon });\n },\n\n consentRequired: function() {\n this.render(ConsentRequiredController);\n },\n\n adminConsentRequired: function() {\n this.render(AdminConsentRequiredController);\n },\n\n enrollUser: function() {\n this.render(EnrollUserController);\n },\n\n deviceActivate: function() {\n this.render(DeviceActivateController);\n },\n deviceActivateComplete: function() {\n this.render(DeviceActivateTerminalController);\n },\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Enums from 'util/Enums';\n\n/**\n * Structure of FORMS object:\n * { [CONSTANT]: remediationForm.name }\n */\nconst FORMS = {\n IDENTIFY: 'identify',\n SELECT_IDENTIFY: 'select-identify',\n IDENTIFY_RECOVERY: 'identify-recovery',\n SELECT_ENROLL_PROFILE: 'select-enroll-profile',\n ENROLL_PROFILE: 'enroll-profile',\n ENROLL_PROFILE_UPDATE: 'profile-update',\n UNLOCK_ACCOUNT: 'unlock-account',\n REQUEST_ACTIVATION: 'request-activation-email',\n\n CONSENT_ADMIN: 'admin-consent',\n CONSENT_ENDUSER: 'consent',\n CONSENT_GRANULAR: 'granular-consent',\n CONSENT_EMAIL_CHALLENGE: 'email-challenge-consent',\n\n SELECT_AUTHENTICATOR_AUTHENTICATE: 'select-authenticator-authenticate',\n SELECT_AUTHENTICATOR_UNLOCK: 'select-authenticator-unlock-account',\n\n AUTHENTICATOR_VERIFICATION_DATA: 'authenticator-verification-data',\n CHALLENGE_AUTHENTICATOR: 'challenge-authenticator',\n CHALLENGE_POLL: 'challenge-poll',\n RESEND: 'resend',\n\n SELECT_AUTHENTICATOR_ENROLL: 'select-authenticator-enroll',\n SELECT_AUTHENTICATOR_ENROLL_DATA: 'select-authenticator-enroll-data',\n AUTHENTICATOR_ENROLLMENT_DATA: 'authenticator-enrollment-data',\n ENROLL_AUTHENTICATOR: 'enroll-authenticator',\n SELECT_ENROLLMENT_CHANNEL: 'select-enrollment-channel',\n ENROLLMENT_CHANNEL_DATA: 'enrollment-channel-data',\n ENROLL_POLL: 'enroll-poll',\n REENROLL_AUTHENTICATOR: 'reenroll-authenticator',\n REENROLL_AUTHENTICATOR_WARNING: 'reenroll-authenticator-warning',\n REENROLL_CUSTOM_PASSWORD_EXPIRY: 'reenroll-custom-password-expiry',\n REENROLL_CUSTOM_PASSWORD_EXPIRY_WARNING: 'reenroll-custom-password-expiry-warning',\n RESET_AUTHENTICATOR: 'reset-authenticator',\n SKIP: 'skip',\n POLL: 'poll',\n\n FAILURE_REDIRECT: 'failure-redirect',\n SUCCESS_REDIRECT: 'success-redirect',\n REDIRECT_IDP: 'redirect-idp',\n PIV_IDP: 'piv-idp',\n\n DEVICE_CHALLENGE_POLL: 'device-challenge-poll',\n DEVICE_APPLE_SSO_EXTENSION: 'device-apple-sso-extension',\n CANCEL_TRANSACTION: 'cancel-transaction',\n LAUNCH_AUTHENTICATOR: 'launch-authenticator',\n LAUNCH_WEBAUTHN_AUTHENTICATOR: 'launch-webauthn-authenticator',\n ENROLL_WEBAUTHN_RESIDENTKEY: 'enroll-webauthn-residentkey',\n\n DEVICE_ENROLLMENT_TERMINAL: 'device-enrollment-terminal',\n\n USER_CODE: 'user-code',\n\n // 'terminal` is not ION Form name but only coined in widget\n // for rendering a page that user has nothing to remediate.\n TERMINAL: 'terminal',\n};\n// Forms added here do not show the Sign out link\nconst FORMS_WITHOUT_SIGNOUT = [\n FORMS.IDENTIFY,\n FORMS.SUCCESS_REDIRECT,\n FORMS.ENROLL_PROFILE,\n FORMS.DEVICE_ENROLLMENT_TERMINAL,\n FORMS.CONSENT_ADMIN,\n FORMS.CONSENT_ENDUSER,\n FORMS.CONSENT_GRANULAR,\n FORMS.CONSENT_EMAIL_CHALLENGE,\n FORMS.USER_CODE\n];\n\nconst FORMS_WITH_STATIC_BACK_LINK = [\n FORMS.SELECT_AUTHENTICATOR_ENROLL,\n FORMS.SELECT_AUTHENTICATOR_AUTHENTICATE\n];\n\nconst FORMS_FOR_VERIFICATION = [\n FORMS.SELECT_AUTHENTICATOR_AUTHENTICATE,\n FORMS.CHALLENGE_AUTHENTICATOR,\n FORMS.CHALLENGE_POLL,\n FORMS.RESEND\n];\n\nconst AUTHENTICATOR_KEY = {\n EMAIL: 'okta_email',\n PASSWORD: 'okta_password',\n PHONE: 'phone_number',\n WEBAUTHN: 'webauthn',\n SECURITY_QUESTION: 'security_question',\n OV: 'okta_verify',\n GOOGLE_OTP: 'google_otp',\n ON_PREM: 'onprem_mfa',\n RSA: 'rsa_token',\n DUO: 'duo',\n IDP: 'external_idp',\n CUSTOM_OTP: 'custom_otp',\n SYMANTEC_VIP: 'symantec_vip',\n YUBIKEY: 'yubikey_token',\n CUSTOM_APP: 'custom_app',\n SMARTCARD: 'smart_card_idp'\n};\n\nconst AUTHENTICATOR_METHODS = {\n PUSH: 'push',\n};\n\nconst FORM_NAME_TO_OPERATION_MAP = {\n [FORMS.SELECT_AUTHENTICATOR_UNLOCK]: Enums.UNLOCK_ACCOUNT,\n [FORMS.IDENTIFY]: Enums.PRIMARY_AUTH,\n [FORMS.IDENTIFY_RECOVERY]: Enums.FORGOT_PASSWORD,\n};\n\nconst ENROLLED_PASSWORD_RECOVERY_LINK = 'currentAuthenticatorEnrollment-recover';\nconst ORG_PASSWORD_RECOVERY_LINK = 'currentAuthenticator-recover';\nconst ACTIONS = {\n ENROLLED_PASSWORD_RECOVERY_LINK,\n ORG_PASSWORD_RECOVERY_LINK\n};\n\n// Possible Remediation Form Field Hints\nconst HINTS = {\n CAPTCHA: 'captcha',\n};\n\nconst TERMINAL_FORMS = [\n FORMS.TERMINAL,\n FORMS.DEVICE_ENROLLMENT_TERMINAL,\n];\nconst IDP_FORM_TYPE = {\n X509: 'X509',\n};\n\n// Possible options for the SIW interstitial redirect view\nconst INTERSTITIAL_REDIRECT_VIEW = {\n DEFAULT: 'DEFAULT',\n NONE: 'NONE'\n};\n\nconst ATTR_FORMAT = {\n COUNTRY_CODE: 'country-code',\n};\n\nexport {\n ACTIONS,\n FORMS,\n FORMS_WITHOUT_SIGNOUT,\n FORMS_WITH_STATIC_BACK_LINK,\n FORMS_FOR_VERIFICATION,\n AUTHENTICATOR_KEY,\n AUTHENTICATOR_METHODS,\n FORM_NAME_TO_OPERATION_MAP,\n HINTS,\n TERMINAL_FORMS,\n IDP_FORM_TYPE,\n INTERSTITIAL_REDIRECT_VIEW,\n ATTR_FORMAT,\n};\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _ } from '@okta/courage';\nimport { AUTHENTICATOR_KEY } from '../RemediationConstants';\n\n/**\n * Example of the option like\n * @param {AuthenticatorOption[]} options\n * @param {( AuthenticatorEnrollment[] || Authenticator[] )} authenticators\n */\nexport function createOVOptions(options = []) {\n // Split OV into individual entries for verification (one for each method).\n const ovItem = options.find((option) => option.relatesTo.key === AUTHENTICATOR_KEY.OV);\n const methodTypeObj = ovItem?.value?.form?.value?.find(v => v.name === 'methodType');\n const methodOptions = methodTypeObj?.options;\n let signedNonceOption;\n if (methodOptions) {\n const ovOptions = [];\n methodOptions.forEach((method) => {\n // get value object from the ov item\n const value = [...ovItem.value.form.value];\n // get index of the methodType object within the value object\n const methodTypeIndex = ovItem.value.form.value.findIndex((v) => v.name === 'methodType');\n // create a new methodType object that removes the options array and\n // has a value of the current method\n const newMethodTypeObj = Object.assign(_.omit(methodTypeObj, 'options'), method);\n // set the methodType field to be required and immutable in our UI,\n // so it is always sent to the backend.\n newMethodTypeObj.required = true;\n newMethodTypeObj.mutable = false;\n // replace old methodType object with the new one\n value.splice(methodTypeIndex, 1, newMethodTypeObj);\n // return a new ov item for a specific method\n const newItem = Object.assign({}, ovItem, {\n label: method.label,\n value: {\n form: {\n value,\n }\n }\n });\n if (method.value === 'signed_nonce') {\n signedNonceOption = newItem;\n } else {\n ovOptions.push(newItem);\n }\n });\n const ovIndex = options.findIndex((option) => option.relatesTo.key === AUTHENTICATOR_KEY.OV);\n options.splice(ovIndex, 1, ...ovOptions);\n\n // ReArrange fastpass in options based on deviceKnown\n if (signedNonceOption) {\n ovItem.relatesTo.deviceKnown ? options.unshift(signedNonceOption) : options.push(signedNonceOption);\n }\n }\n}\n\nfunction createAuthenticatorOptions(options = []) {\n createOVOptions(options);\n return options.map(option => {\n const value = option.value?.form?.value || [];\n\n // Each authenticator option has list of ION field.\n // Currently we only support merely selecting one of options\n // rather than pop up another page to collect extra data\n // (in order to fill value for `mutable: true; value: null` fields).\n // The only reason of such design is to simplify widget implementation\n // but could subject to change in later releases.\n // Thus only surface up fields that are `required: true; mutable: false`\n // which implies it already has `value`.\n const valueObject = value\n .filter(v => v.required === true && v.mutable === false)\n .reduce((init, v) => {\n return Object.assign(init, { [v.name]: v.value });\n }, {});\n return {\n label: option.label,\n value: valueObject,\n relatesTo: option.relatesTo,\n authenticatorKey: option.relatesTo?.key,\n };\n });\n}\n\nfunction getAuthenticatorsEnrollUiSchema({ options }) {\n return {\n type: 'authenticatorEnrollSelect',\n options: createAuthenticatorOptions(options),\n };\n}\n\nfunction getAuthenticatorsVerifyUiSchema({ options }) {\n return {\n type: 'authenticatorVerifySelect',\n options: createAuthenticatorOptions(options),\n };\n}\n\n/**\n * Create ui schema for ION field that has type 'object'.\n */\nexport default function createUiSchemaForObject(ionFormField, remediationForm, transformedResp,\n createUISchema, settings) {\n const uiSchema = {};\n\n if (ionFormField.name === 'authenticator' &&\n (remediationForm.name === 'select-authenticator-authenticate' ||\n remediationForm.name === 'select-authenticator-unlock-account')) {\n // 1. when `select-authenticator-authenticator`,\n // create customize type so that display authenticator list as selectable list\n Object.assign(uiSchema, getAuthenticatorsVerifyUiSchema(ionFormField));\n } else if (ionFormField.name === 'authenticator' && remediationForm.name === 'select-authenticator-enroll') {\n // 2. when `select-authenticator-enroll`,\n // create customize type so that display authenticator list as selectable list\n Object.assign(uiSchema, getAuthenticatorsEnrollUiSchema(ionFormField));\n } else if (Array.isArray(ionFormField.options)) {\n // 3. For other cases, create ui schema for each `option` in order to render\n // different view for each option.\n //\n // e.g. { \"name\": \"credentials\", \"type\": \"object\", options: [ {value: {form: value:[]} ]\n uiSchema.optionsUiSchemas = ionFormField.options.map(opt => {\n return createUISchema(transformedResp, {\n value: [\n {\n name: ionFormField.name,\n value: opt.value,\n }\n ]\n }, settings);\n });\n uiSchema.options = ionFormField.options.map((opt, index) => {\n return { label: opt.label, value: index };\n });\n // assume (default to) use radio buttons to switch sub-schema.\n uiSchema.type = 'radio';\n uiSchema.value = '0';\n uiSchema.name = `sub_schema_local_${ionFormField.name}`;\n }\n\n return uiSchema;\n}\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nexport async function executeHookFunctions(functions) {\n for (let i = 0; i < functions.length; i++) {\n await functions[i]();\n }\n}\n\nexport async function executeHooksBefore(hook) {\n if (!hook || !hook.before || !hook.before.length) {\n return;\n }\n await executeHookFunctions(hook.before);\n}\n\nexport async function executeHooksAfter(hook) {\n if (!hook || !hook.after || !hook.after.length) {\n return;\n }\n await executeHookFunctions(hook.after);\n}\n\nexport function mergeHook(hooks, formName, hookToMerge) {\n const existingHook = hooks[formName] = hooks[formName] || { before: [], after: [] };\n if (hookToMerge.before) {\n existingHook.before = (existingHook.before || []).concat(hookToMerge.before);\n }\n if (hookToMerge.after) {\n existingHook.after = (existingHook.after || []).concat(hookToMerge.after);\n }\n}\n","import { _ } from '@okta/courage';\n\ndeclare module '@okta/courage' {\n interface OktaUnderscore {\n nestedOmit(obj: Record, names): Record\n }\n}\n\n_.mixin({\n nestedOmit: function(obj, names) {\n let result = _.omit(obj, names);\n\n if (names.includes(result.name)) {\n result = _.omit(result, 'value');\n }\n\n _.each(result, function(val, key) {\n if (Array.isArray(val)) {\n result[key] = val.map((v) => {\n return _.nestedOmit(v, names);\n });\n } else if (typeof val === 'object') {\n result[key] = _.nestedOmit(val, names);\n }\n });\n return result;\n },\n});\n\nexport { _ };\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Model, ModelProperty } from '@okta/courage';\nimport Logger from 'util/Logger';\nimport {\n FORMS_WITHOUT_SIGNOUT,\n FORMS_WITH_STATIC_BACK_LINK,\n FORMS_FOR_VERIFICATION,\n AUTHENTICATOR_KEY,\n FORMS,\n} from '../ion/RemediationConstants';\nimport { createOVOptions } from '../ion/ui-schema/ion-object-handler';\nimport { _ } from '../mixins/mixins';\nimport { executeHooksBefore, executeHooksAfter } from 'util/Hooks';\nimport Settings from 'models/Settings';\nimport Hooks from 'models/Hooks';\nimport { RecoverableError } from 'util/OAuthErrors';\nimport { IdxRemediation } from '@okta/okta-auth-js';\nimport BrowserFeatures from 'util/BrowserFeatures';\n\nconst UNKNOWN_USER_I8N_KEY = \"idx.unknown.user\";\n/**\n * Keep track of stateMachine with this special model. Similar to `src/models/AppState.js`\n */\n\nconst local: Record = {\n user: 'object', // optional\n currentFormName: 'string',\n idx: 'object',\n remediations: 'array',\n dynamicRefreshInterval: 'number',\n deviceFingerprint: 'string',\n hooks: 'object' // instance of models/Hooks\n};\n\nconst derived: Record = {\n authenticatorProfile: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { profile: undefined }, currentAuthenticatorEnrollment = { profile: undefined }) {\n return currentAuthenticator.profile\n || currentAuthenticatorEnrollment.profile\n || {};\n },\n },\n authenticatorKey: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { key: undefined }, currentAuthenticatorEnrollment = { key: undefined }) {\n return currentAuthenticator.key\n || currentAuthenticatorEnrollment.key\n || '';\n },\n },\n authenticatorMethodType: {\n deps: ['currentAuthenticator', 'currentAuthenticatorEnrollment'],\n fn(currentAuthenticator = { methods: undefined }, currentAuthenticatorEnrollment = { methods: undefined }) {\n return currentAuthenticator.methods && currentAuthenticator.methods[0].type\n || currentAuthenticatorEnrollment.methods && currentAuthenticatorEnrollment.methods[0].type\n || '';\n },\n },\n isPasswordRecovery: {\n deps: ['recoveryAuthenticator'],\n fn: function(recoveryAuthenticator = { type: undefined }) {\n return recoveryAuthenticator?.type === 'password';\n }\n }\n};\n\nexport type AppStateProps = typeof local & typeof derived;\n\nexport default class AppState extends Model {\n settings: Settings;\n hooks: Hooks;\n \n constructor(attributes, options) {\n super(attributes, options);\n this.settings = options.settings;\n this.hooks = options.hooks;\n }\n\n get
            >(attributeName: A): any {\n return Model.prototype.get.call(this, attributeName);\n }\n\n preinitialize(...args) {\n this.local = local;\n this.derived = derived;\n Model.prototype.preinitialize.apply(this, args);\n }\n\n isIdentifierOnlyView() {\n return !this.get('remediations')?.find(({ name }) => name === 'identify')\n ?.uiSchema?.find(({ name }) => name === 'credentials.passcode');\n }\n\n hasRemediationObject(formName) {\n return this.get('idx').neededToProceed.find((remediation) => remediation.name === formName);\n }\n\n hasActionObject(actionName) {\n return !!this.get('idx')?.actions?.[actionName];\n }\n\n getRemediationAuthenticationOptions(formName) {\n const form = this.hasRemediationObject(formName);\n if (!form) {\n return [];\n }\n const authenticator = form.value.find((value) => value.name === 'authenticator');\n let authenticatorOptions = authenticator?.options || [];\n // OV is a special case, so process OV options\n authenticatorOptions = [...authenticatorOptions]; //clone it since we are changing it for OV\n createOVOptions(authenticatorOptions);\n return authenticatorOptions;\n }\n\n getActionByPath(actionPath) {\n const paths = actionPath.split('.');\n let targetObject;\n if (paths.length === 1) {\n targetObject = this.get('idx').actions;\n } else {\n targetObject = this.get(paths.shift());\n }\n // Limitation\n // At the time of writting, action only lives in first level of state objects.\n const actionName = paths.shift();\n if (targetObject && _.isFunction(targetObject[actionName])) {\n return targetObject[actionName];\n } else {\n return null;\n }\n }\n\n getCurrentViewState() {\n const currentFormName = this.get('currentFormName');\n\n if (!currentFormName) {\n return;\n }\n\n // didn't expect `remediations` is empty. See `setIonResponse`.\n const currentViewState = this.get('remediations').filter(r => r.name === currentFormName)[0];\n\n if (!currentViewState) {\n Logger.error('Panic!!');\n Logger.error(`\\tCannot find view state for form ${currentFormName}.`);\n const allFormNames = this.get('remediations').map(r => r.name);\n Logger.error(`\\tAll available form names: ${allFormNames}`);\n }\n\n return currentViewState;\n }\n\n /**\n * Returns ui schema of the form field from current view state\n * @param {string} fieldName\n * @returns {}\n */\n getSchemaByName(fieldName) {\n const currentViewState = this.getCurrentViewState();\n if(currentViewState) {\n const uiSchema = currentViewState.uiSchema;\n return uiSchema.find(({ name }) => name === fieldName);\n }\n }\n\n /**\n * Returns the displayName of the authenticator\n * @returns {string}\n */\n getAuthenticatorDisplayName() {\n const currentAuthenticator = this.get('currentAuthenticator') || {};\n const currentAuthenticatorEnrollment = this.get('currentAuthenticatorEnrollment') || {};\n\n // For enrollment and certain verification flows, the currentAuthenticator object will be present.\n // If not, we're likely in a traditional verify/challenge flow.\n return currentAuthenticator.displayName || currentAuthenticatorEnrollment.displayName;\n }\n\n /**\n * Checks to see if we're in an authenticator challenge flow.\n * @returns {boolean}\n */\n isAuthenticatorChallenge() {\n const currentFormName = this.get('currentFormName');\n return FORMS_FOR_VERIFICATION.includes(currentFormName);\n }\n\n shouldReRenderView(transformedResponse) {\n if (transformedResponse?.idx?.hasFormError) {\n return false;\n }\n\n const previousRawState = this.has('idx') ? this.get('idx').rawIdxState : null;\n\n const identicalResponse = _.isEqual(\n _.nestedOmit(transformedResponse.idx.rawIdxState, ['expiresAt', 'refresh', 'stateHandle', 'headers']),\n _.nestedOmit(previousRawState, ['expiresAt', 'refresh', 'stateHandle', 'headers']));\n\n if (identicalResponse) {\n this.set('dynamicRefreshInterval', this.getRefreshInterval(transformedResponse));\n }\n\n return this._isReRenderRequired(identicalResponse, transformedResponse, previousRawState);\n }\n\n getRefreshInterval(transformedResponse) {\n // Only polling refresh interval has changed in the response,\n // make sure to update the correct poll view's refresh value\n const currentFormName = this.get('currentFormName');\n const currentViewState = transformedResponse.remediations.filter(r => r.name === currentFormName)[0];\n // Get new refresh interval for either: remediations, authenticator, or authenticator enrollment\n return currentViewState.refresh ||\n transformedResponse.currentAuthenticatorEnrollment?.poll?.refresh ||\n transformedResponse.currentAuthenticator?.poll?.refresh;\n }\n\n // Sign Out link will be displayed in the footer of a form, unless:\n // - widget configuration set hideSignOutLinkInMFA or mfaOnlyFlow to true\n // - cancel remediation form is not present in the response\n // - form is part of our list FORMS_WITHOUT_SIGNOUT\n shouldShowSignOutLinkInCurrentForm(hideSignOutLinkInMFA) {\n const idxActions = this.get('idx') && this.get('idx').actions;\n const currentFormName = this.get('currentFormName');\n\n return !hideSignOutLinkInMFA\n && _.isFunction(idxActions?.cancel)\n && !FORMS_WITHOUT_SIGNOUT.includes(currentFormName);\n }\n\n containsMessageWithI18nKey(keys) {\n if (!Array.isArray(keys)) {\n keys = [keys];\n }\n const messagesObjs = this.get('messages');\n return messagesObjs && Array.isArray(messagesObjs.value)\n && messagesObjs.value.some(messagesObj => _.contains(keys, messagesObj.i18n?.key));\n }\n\n containsMessageStartingWithI18nKey(keySubStr) {\n const messagesObjs = this.get('messages');\n return messagesObjs && Array.isArray(messagesObjs.value)\n && messagesObjs.value.some(messagesObj => messagesObj.i18n?.key.startsWith(keySubStr));\n }\n\n clearAppStateCache() {\n // clear appState before setting new values\n const attrs = {};\n for (const key in this.attributes) {\n if (key !== 'currentFormName') {\n attrs[key] = void 0;\n }\n }\n this.set(attrs, Object.assign({}, { unset: true, silent: true }));\n // clear cache for derived props.\n this.trigger('cache:clear');\n }\n\n chooseRemediation(transformedResponse): IdxRemediation | undefined {\n if (_.isEmpty(transformedResponse.remediations)) {\n return;\n }\n\n const firstRemediation = transformedResponse.remediations[0];\n\n // Special case: Okta Verify: show select enrollment channel instead of QR code on mobile\n if (firstRemediation.name === 'enroll-poll'\n && this.get('authenticatorKey') === AUTHENTICATOR_KEY.OV\n && (BrowserFeatures.isAndroid() || BrowserFeatures.isIOS())\n && transformedResponse.currentAuthenticator?.contextualData?.selectedChannel === 'qrcode'\n ) {\n return transformedResponse.remediations.find(r => r.name === 'select-enrollment-channel')\n }\n\n // Default case: return the first remediation in the list\n return firstRemediation;\n }\n\n async setIonResponse(transformedResponse) {\n const doRerender = this.shouldReRenderView(transformedResponse);\n this.clearAppStateCache();\n // set new app state properties\n this.set(transformedResponse);\n\n if (doRerender) {\n const remediation = this.chooseRemediation(transformedResponse);\n let currentFormName = null;\n if (remediation) {\n currentFormName = remediation.name;\n } else {\n Logger.error('Panic!!');\n Logger.error('\\tNo remediation found.');\n Logger.error('\\tHere is the entire response');\n Logger.error(JSON.stringify(transformedResponse, null, 2));\n }\n\n const hook = this.hooks?.getHook(currentFormName); // may be undefined\n await executeHooksBefore(hook);\n \n this.unset('currentFormName', { silent: true });\n // make sure change `currentFormName` is last step.\n // change `currentFormName` will re-render FormController,\n // which may depend on other derived properties hence\n // those derived properties must be re-computed before\n // re-rendering controller.\n this.set({ currentFormName });\n\n await executeHooksAfter(hook);\n }\n }\n\n setNonIdxError(error: RecoverableError) {\n this.set('remediations', [{ name: FORMS.TERMINAL }]);\n this.set('messages', { value: [\n {\n message: error.errorDetails.errorSummary,\n class: 'ERROR'\n }\n ]})\n this.set('currentFormName', FORMS.TERMINAL);\n }\n\n getUser() {\n return this.get('user');\n }\n\n _isReRenderRequired(identicalResponse, transformedResponse, previousRawState) {\n let reRender = true;\n\n const isPreviousStateError = this.get('idx')?.hasFormError;\n if (isPreviousStateError && this._isChallengeAuthenticatorPoll(transformedResponse, previousRawState)) {\n reRender = false;\n }\n\n if (identicalResponse) {\n /**\n * returns false: When new response is same as last.\n * usually happens during polling when pipeline doesn't proceed to next step.\n * expiresAt will be different for each response, hence compare objects without that property\n */\n reRender = false;\n if (this.get('currentFormName') === 'poll') {\n /**\n * returns true: We want to force reRender when currentForm is poll because request has to reinitiate\n * based on new refresh and UI has to reflect new timer.\n * We dont technical poll here we just make a request after the specified refresh time each time\n * we get a new response.\n */\n reRender = true;\n } else if (FORMS_WITH_STATIC_BACK_LINK.includes(this.get('currentFormName'))) {\n /**\n * returns true: We want to force reRender if you go back to selection screen from challenge or enroll screen\n * and re-select the same authenticator for challenge. In this case also new response will be identical\n * to the old response.\n */\n reRender = true;\n } else if (this.containsMessageWithI18nKey(UNKNOWN_USER_I8N_KEY)) {\n /**\n * Need to re-render or else form will be stuck in saving mode.\n * This message is a form warning that can result in identical responses if the user enters the same\n * username as the one in the last message warning.\n */\n reRender = true;\n }\n }\n\n return reRender;\n }\n\n /**\n * This is to account for the edge case introduced by this issue: OKTA-419210. With the current idx remediations,\n * there's no good way to generalize this as the backend handles the authenticators for phone, sms and \n * email differently. Although not ideal, we have to keep this check in for now until we find a better solution.\n */\n _isChallengeAuthenticatorPoll(transformedResponse, previousRawState) {\n const isSameExceptMessages = _.isEqual(\n _.nestedOmit(transformedResponse.idx.rawIdxState, ['expiresAt', 'refresh', 'stateHandle', 'headers']),\n _.nestedOmit(previousRawState, ['expiresAt', 'refresh', 'stateHandle', 'messages', 'headers']));\n\n const isChallengeAuthenticator = this.get('currentFormName') === 'challenge-authenticator';\n const isCurrentAuthenticatorEmail = this.get('currentAuthenticatorEnrollment')?.key === AUTHENTICATOR_KEY.EMAIL;\n\n return isSameExceptMessages && isChallengeAuthenticator && isCurrentAuthenticatorEmail;\n }\n}\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nconst STATE_HANDLE_SESSION_STORAGE_KEY = 'osw-oie-state-handle';\nconst LAST_INITIATED_LOGIN_URL_SESSION_STORAGE_KEY = 'osw-oie-last-initiated-login-url';\nconst RESEND_TIMESTAMP_SESSION_STORAGE_KEY = 'osw-oie-resend-timestamp';\n\nconst removeStateHandle = () => {\n sessionStorage.removeItem(STATE_HANDLE_SESSION_STORAGE_KEY);\n sessionStorage.removeItem(LAST_INITIATED_LOGIN_URL_SESSION_STORAGE_KEY);\n};\nconst setStateHandle = (token) => {\n sessionStorage.setItem(STATE_HANDLE_SESSION_STORAGE_KEY, token);\n sessionStorage.setItem(LAST_INITIATED_LOGIN_URL_SESSION_STORAGE_KEY, window.location.href);\n};\nconst getStateHandle = () => {\n return sessionStorage.getItem(STATE_HANDLE_SESSION_STORAGE_KEY);\n};\nconst getLastInitiatedLoginUrl = () => {\n return sessionStorage.getItem(LAST_INITIATED_LOGIN_URL_SESSION_STORAGE_KEY);\n};\nconst removeResendTimestamp = () => {\n sessionStorage.removeItem(RESEND_TIMESTAMP_SESSION_STORAGE_KEY);\n};\nconst setResendTimestamp = (token) => {\n sessionStorage.setItem(RESEND_TIMESTAMP_SESSION_STORAGE_KEY, token);\n};\nconst getResendTimestamp = () => {\n return sessionStorage.getItem(RESEND_TIMESTAMP_SESSION_STORAGE_KEY);\n};\n\n\nexport default {\n removeStateHandle,\n setStateHandle,\n getStateHandle,\n getLastInitiatedLoginUrl,\n removeResendTimestamp,\n setResendTimestamp,\n getResendTimestamp\n};\n","/*!\n * Copyright (c) 2015-2016, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nconst CONFIGURED_FLOW = {\n DEFAULT: 'default',\n PROCEED: 'proceed',\n LOGIN: 'login',\n REGISTRATION: 'signup',\n RESET_PASSWORD: 'resetPassword',\n UNLOCK_ACCOUNT: 'unlockAccount',\n};\n\nexport {\n CONFIGURED_FLOW,\n};","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ConfiguredFlowError, ConfigError } from 'util/Errors';\nimport { emailVerifyCallback } from './emailVerifyCallback';\nimport sessionStorageHelper from './sessionStorageHelper';\nimport { CONFIGURED_FLOW } from './constants';\nimport { IdxTransactionMeta, ProceedOptions } from '@okta/okta-auth-js';\n\nconst handleProxyIdxResponse = async (settings) => {\n return Promise.resolve({\n rawIdxState: settings.get('proxyIdxResponse'),\n context: settings.get('proxyIdxResponse'),\n neededToProceed: [],\n });\n};\n\n/* eslint max-depth: [2, 3] */\n// eslint-disable-next-line complexity, max-statements\nexport async function startLoginFlow(settings) {\n const authClient = settings.getAuthClient();\n // nonce is not a top-level auth-js option, must be passed in manually\n const { authParams } = settings.toJSON({verbose: true});\n const nonce = settings.get('nonce') || authParams?.nonce;\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n ...(nonce && { nonce })\n };\n\n // Return a preset response\n if (settings.get('proxyIdxResponse')) {\n return handleProxyIdxResponse(settings);\n }\n\n if (settings.get('overrideExistingStateToken')) {\n sessionStorageHelper.removeStateHandle();\n }\n\n if (settings.get('otp')) {\n return emailVerifyCallback(settings);\n }\n\n if (settings.get('oauth2Enabled')) {\n const meta: IdxTransactionMeta = await authClient.idx.getSavedTransactionMeta();\n if (!meta) {\n // no saved transaction\n // if the configured flow is set to `proceed`, the SIW should only continue an existing idx transaction\n // if the SIW loads from a fresh state (there is no current transaction), throw an error\n const flow = authClient.idx.getFlow();\n if (flow && flow === CONFIGURED_FLOW.PROCEED) {\n throw new ConfiguredFlowError(\n 'Unable to proceed: saved transaction could not be loaded', flow\n );\n }\n // start new transaction\n return authClient.idx.start(idxOptions); // calls interact\n }\n\n // continue saved transaction\n return authClient.idx.proceed(idxOptions); // calls introspect\n }\n\n // Use stateToken from session storage if exists\n // See more details at ./docs/use-session-token-prior-to-settings.png\n const stateHandleFromSession = sessionStorageHelper.getStateHandle();\n if (stateHandleFromSession) {\n try {\n const idxResp = await authClient.idx.start({\n ...idxOptions,\n stateHandle: stateHandleFromSession\n });\n const hasError = idxResp.context?.messages?.value.length > 0;\n if (hasError) {\n throw new Error('saved stateToken is invalid'); // will be caught in this function\n }\n\n // 1. abandon the settings.stateHandle given session.stateHandle is still valid\n settings.set('stateToken', stateHandleFromSession);\n // 2. chain the idxResp to next handler\n return idxResp;\n } catch {\n // 1. remove session.stateHandle\n sessionStorageHelper.removeStateHandle();\n // 2. start the login again in order to introspect on settings.stateHandle\n return startLoginFlow(settings);\n }\n }\n\n // Use stateToken from options\n const stateHandle = settings.get('stateToken');\n if (stateHandle) {\n return authClient.idx.start({\n ...idxOptions,\n stateHandle\n });\n }\n\n throw new ConfigError('Invalid OIDC configuration. Set \"clientId\" and \"redirectUri\" in the widget options.');\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { ProceedOptions } from '@okta/okta-auth-js';\n\nexport async function emailVerifyCallback(settings) {\n const authClient = settings.getAuthClient();\n const idxOptions: ProceedOptions = {\n exchangeCodeForTokens: false, // we handle this in interactionCodeFlow.js\n };\n const meta = await authClient.idx.getSavedTransactionMeta(); // meta can load in another tab using state if it matches\n if (!meta || !meta.interactionHandle) {\n // Flow can not continue in this tab. Create a synthetic server response and use it to display a message to the user\n const messages = {\n type: 'array',\n value: [\n // terminal-return-otp-only-no-location.json\n {\n 'message': 'Enter the OTP in your original browser or device.',\n 'i18n': {\n 'key': 'idx.enter.otp.in.original.tab'\n },\n 'class': 'INFO'\n }\n ]\n };\n\n const resp = {\n neededToProceed: [],\n // OKTA-382410 so bad that has to leverage rawIdxState\n rawIdxState: {\n messages,\n },\n context: {\n messages,\n }\n };\n return resp;\n }\n \n // Proceed using the OTP code\n const otp = settings.get('otp');\n const idxResponse = await authClient.idx.proceed({\n ...idxOptions,\n otp\n });\n return idxResponse;\n}\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _ } from '@okta/courage';\nimport { FORMS as RemediationForms, AUTHENTICATOR_KEY, IDP_FORM_TYPE } from './RemediationConstants';\n\n/**\n * Transform the ion spec response into canonical format.\n */\n\n/**\n * Authn V2 response\n * @typedef {Object} AuthnResponse\n */\n\n/**\n * @typedef {Object} AuthnResult\n * @property {Object=} user\n * @property {Object=} authenticator\n */\n\nconst isObject = x => _.isObject(x);\n\nconst isError = response => !!response.messages;\n\n/**\n * Flatten first level objects from response\n */\nconst getFirstLevelObjects = (resp) => {\n const result = {};\n _.each(resp, (val = {}, key) => {\n // if key is remediation we don't do any transformation\n if (key === 'remediation') {\n return;\n }\n\n // for arrays we just want it as a top level object\n // Example authenticators array in select-authenticator form\n if (val.type === 'array') {\n result[key] = {\n value: val.value,\n };\n }\n\n // for handling attributes with type object\n if (val.type === 'object') {\n result[key] = val.value;\n }\n });\n return result;\n};\n\nconst getRemediationValues = (idx) => {\n const remediationValues = [];\n const hasSkipRemediationOnly =\n idx.neededToProceed.length === 1 && idx.neededToProceed[0].name === 'skip';\n if (_.isEmpty(idx.neededToProceed) || hasSkipRemediationOnly) {\n // no remediation or only skip remediation with success\n if (idx.context.success) {\n remediationValues.push({\n name: idx.context.success.name,\n href: idx.context.success.href,\n value: [],\n });\n } else if (idx.context.messages) {\n // no remediation or only skip remediation with messages\n remediationValues.push({\n name: RemediationForms.TERMINAL,\n // Using `value` is unnecessary as `messages` will be display via `TerminalView.showMessages`,\n // even though might sound a little counterintuitive.\n // The reason being is there is `BaseForm.showMessages` that is intended to handle\n // messages generically.\n value: [],\n });\n } else if (idx.context.deviceEnrollment) {\n // no remediation or only skip remediation with messages for device enrollment state\n // and the state is meant to be terminal state with different UI than the regular terminal view\n remediationValues.push({\n name: RemediationForms.DEVICE_ENROLLMENT_TERMINAL,\n value: [],\n });\n }\n }\n return {\n remediations: [\n ...remediationValues,\n ...idx.neededToProceed,\n ]\n };\n};\n\n/**\n * To support `idps` configuration in OIE.\n * https://github.com/okta/okta-signin-widget#openid-connect\n */\nconst injectIdPConfigButtonToRemediation = (settings, idxResp) => {\n const widgetRemedations = idxResp.remediations;\n const hasIdentifyRemedation = widgetRemedations.filter(r => r.name === 'identify');\n if (hasIdentifyRemedation.length === 0) {\n return idxResp;\n }\n\n const idpsConfig = settings.get('idps');\n if (Array.isArray(idpsConfig)) {\n const existsRedirectIdpIds = {};\n widgetRemedations.forEach(r => {\n if (r.name === RemediationForms.REDIRECT_IDP && r.idp) {\n existsRedirectIdpIds[r.idp.id] = true;\n }\n });\n const baseUrl = settings.get('baseUrl');\n const stateHandle = idxResp.idx.context.stateHandle;\n const redirectIdpRemedations = idpsConfig\n .filter(c => !existsRedirectIdpIds[c.id]) // omit idps that are already in remediation.\n .map(idpConfig => {\n const idp = {\n id: idpConfig.id,\n name: idpConfig.text,\n };\n const redirectUri = `${baseUrl}/sso/idps/${idpConfig.id}?stateToken=${stateHandle}`;\n if (idpConfig.className) {\n idp.className = idpConfig.className;\n }\n return {\n name: RemediationForms.REDIRECT_IDP,\n type: idpConfig.type,\n idp,\n href: redirectUri,\n };\n });\n idxResp.remediations = widgetRemedations.concat(redirectIdpRemedations);\n }\n\n return idxResp;\n};\n\n/**\n * IFF there is one `redirect-idp` remediation form, widget will automatically redirect to `redirect-idp.href`.\n *\n * The idea now is to reuse `success-redirect` thus converts `redirect-idp` to `success-redirect` form.\n */\nconst convertRedirectIdPToSuccessRedirectIffOneIdp = (settings, result, lastResult) => {\n if (Array.isArray(result.remediations)) {\n const redirectIdpRemediations = result.remediations.filter(idp => idp.name === RemediationForms.REDIRECT_IDP);\n if (redirectIdpRemediations.length !== 1 || result.remediations.length !== 1) {\n return;\n }\n\n // Direct auth clients should not redirect on the initial response\n const isDirectAuth = settings.get('oauth2Enabled');\n if (isDirectAuth && !lastResult) {\n return;\n }\n\n const successRedirect = {\n name: RemediationForms.SUCCESS_REDIRECT,\n href: redirectIdpRemediations[0].href,\n value: [],\n };\n result.remediations = [successRedirect];\n }\n};\n\n/**\n * API reuses `redirect-idp` remediation form for PIV IdP and IdP Authenticator.\n * IdP Authenticator becomes outlier comparing with other Authenticators in terms of\n * using `challenge-authenticator` and `enroll-authenticator` remediation form.\n * The UX for PIV IdP is different from other idps in terms of the PIV\n * instructions view that needs to be rendered before we redirect to mtls.\n *\n * This function changes `redirect-idp` to `challenge-authenticator` or `enroll-authenticator`\n * for IdP Authenticator and changes `redirect-idp` to `piv-idp` for PIV IdP.\n */\nconst modifyFormNameForIdP = result => {\n if (Array.isArray(result.remediations)) {\n result.remediations.forEach(remediation => {\n if (remediation.name === RemediationForms.REDIRECT_IDP &&\n remediation?.relatesTo?.value?.key === AUTHENTICATOR_KEY.IDP) {\n // idp authenticator\n const isVerifyFlow = Object.prototype.hasOwnProperty.call(result, 'currentAuthenticatorEnrollment');\n remediation.name = isVerifyFlow ? 'challenge-authenticator' : 'enroll-authenticator';\n }\n if (remediation.name === RemediationForms.REDIRECT_IDP && remediation.type === IDP_FORM_TYPE.X509) {\n // piv idp\n remediation.name = RemediationForms.PIV_IDP;\n }\n });\n }\n};\n\nconst isFailureRedirect = (result) => {\n const context = result.idx.context;\n return (context.failure && context.failure.name === 'failure-redirect');\n};\n\nconst handleFailureRedirect = (settings, result) => {\n const context = result.idx.context;\n\n // Direct auth clients will usually prefer to display the error instead of redirecting\n const isDirectAuth = settings.get('oauth2Enabled');\n const alwaysRedirect = settings.get('redirect') === 'always'; // redirect option overrides default behavior\n if (isDirectAuth && !alwaysRedirect) {\n return;\n }\n \n const failureRedirect = {\n name: RemediationForms.FAILURE_REDIRECT,\n href: context.failure.href,\n value: [],\n };\n result.remediations = [failureRedirect];\n};\n\n/**\n * @param {Models.Settings} user configuration\n * @param {idx} idx object\n * @returns {} transformed object with flattened firstlevel objects, idx and remediations array\n * Example: {\n * idx: {\n * proceed: Æ’(),\n * neededToProceed: [],\n * actions: {cancel: Æ’()},\n * context: {},\n * },\n * remediations: [],\n * authenticators: {},\n * authenticator: {},\n * messages: {},\n * deviceEnrollment: {},\n * }\n */\nconst convert = (settings, idx = {}, lastResult = null) => {\n if (!isObject(idx.rawIdxState)) {\n return null;\n }\n\n // build result object\n const firstLevelObjects = getFirstLevelObjects(idx.rawIdxState);\n const remediationValues = getRemediationValues(idx);\n const result = Object.assign({},\n firstLevelObjects,\n remediationValues,\n { idx }\n );\n \n // transform result object\n if (isError(result) && isFailureRedirect(result)) {\n handleFailureRedirect(settings, result);\n }\n\n // Override the `result` to handle custom IdP login buttons\n // and update the form for IdP Authenticators.\n injectIdPConfigButtonToRemediation(settings, result);\n modifyFormNameForIdP(result);\n\n if (!isError(result)) { // Only redirect to the IdP if we are not in an error flow\n convertRedirectIdPToSuccessRedirectIffOneIdp(settings, result, lastResult);\n }\n\n return result;\n};\n\nexport default convert;\n","export default {\n GMT: 'UTC',\n WET: 'WET',\n CET: 'CET',\n MET: 'CET',\n ECT: 'CET',\n EET: 'EET',\n MIT: 'Pacific/Apia',\n HST: 'Pacific/Honolulu',\n AST: 'America/Anchorage',\n PST: 'America/Los_Angeles',\n MST: 'America/Denver',\n PNT: 'America/Phoenix',\n CST: 'America/Chicago',\n EST: 'America/New_York',\n IET: 'America/Indiana/Indianapolis',\n PRT: 'America/Puerto_Rico',\n CNT: 'America/St_Johns',\n AGT: 'America/Argentina/Buenos_Aires',\n BET: 'America/Sao_Paulo',\n ART: 'Africa/Cairo',\n CAT: 'Africa/Harare',\n EAT: 'Africa/Addis_Ababa',\n NET: 'Asia/Yerevan',\n PLT: 'Asia/Karachi',\n IST: 'Asia/Kolkata',\n BST: 'Asia/Dhaka',\n VST: 'Asia/Ho_Chi_Minh',\n CTT: 'Asia/Shanghai',\n JST: 'Asia/Tokyo',\n ACT: 'Australia/Darwin',\n AET: 'Australia/Sydney',\n SST: 'Pacific/Guadalcanal',\n NST: 'Pacific/Auckland',\n};\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint max-depth: [2, 3] */\n/* eslint complexity: [2, 20] */\nimport { loc } from '@okta/courage';\nimport { HINTS, ATTR_FORMAT } from '../RemediationConstants';\nimport CountryUtil from 'util/CountryUtil';\nimport TimeZone from '../../view-builder/utils/TimeZone';\n\nconst ionOptionsToUiOptions = (options) => {\n const result = {};\n options.forEach(({ value, label }) => {\n result[value] = label;\n });\n return result;\n};\n\nconst getPasswordUiSchema = (settings) => ({\n type: 'password',\n params: {\n showPasswordToggle: settings.get('showPasswordToggle'),\n },\n});\n\nconst getCaptchaUiSchema = () => {\n return {\n type: 'captcha',\n };\n};\n\nconst timezoneUISchema = {\n type: 'select',\n wide: true\n};\n\nconst shouldRenderAsRadio = (name) => name.indexOf('methodType') >= 0 || name.indexOf('channel') >= 0;\n\nconst optionalType = ['text', 'radio', 'select'];\n\nconst populateUISchemaForDisplay = (uiSchema, ionField) => {\n const display = ionField?.value?.value;\n uiSchema.type = display.inputType;\n if (display.inputType === 'radio') {\n uiSchema.options = display.options;\n } else if (display.inputType === 'select') {\n uiSchema.wide = true;\n if (display.format === ATTR_FORMAT.COUNTRY_CODE) {\n uiSchema.options = Object.assign({'': ''}, CountryUtil.getCountryCode());\n } else {\n //it will create a placeholder for dropdowns, by default it will show 'Select an Option'\n uiSchema.options = Object.assign({'': ''}, ionOptionsToUiOptions(display.options));\n }\n }\n};\n\nconst populateUISchemaForRadio = (uiSchema, ionFormField) => {\n // e.g. { name: 'methodType', options: [ {label: 'sms'} ], type: 'string' | null }\n uiSchema.type = 'radio';\n // set the default value to the first value.\n ionFormField.value = ionFormField.options[0].value;\n};\n\nconst createUiSchemaForString = (ionFormField, remediationForm, transformedResp, createUISchema, settings) => {\n const uiSchema = {\n type: 'text'\n };\n\n // e.g. { name: 'password', secret: true }\n if (ionFormField.secret === true) {\n Object.assign(uiSchema, getPasswordUiSchema(settings));\n }\n\n if (ionFormField.hint === HINTS.CAPTCHA) {\n Object.assign(uiSchema, getCaptchaUiSchema());\n }\n\n if(ionFormField.name === 'userProfile.timezone'){\n Object.assign(uiSchema, timezoneUISchema);\n uiSchema.options = Object.assign({'': ''}, TimeZone);\n }\n\n if (Array.isArray(ionFormField.options) && ionFormField.options[0] && ionFormField.options[0].value) {\n const ionField = ionFormField.options[0];\n if (ionField.label === 'display') {\n populateUISchemaForDisplay(uiSchema, ionField);\n } else if (shouldRenderAsRadio(ionFormField.name)) {\n populateUISchemaForRadio(uiSchema, ionFormField);\n } else {\n // default to select (dropdown). no particular reason (certainly can default to radio.)\n // e.g. { name: 'questionKey', options: [], type: 'string' | null }\n uiSchema.type = 'select';\n uiSchema.wide = true;\n uiSchema.options = ionOptionsToUiOptions(ionFormField.options);\n }\n }\n\n // set a label as 'Optional' for supported optional element types\n if(ionFormField.required === false && optionalType.includes(uiSchema.type)) {\n uiSchema.sublabel = loc('oie.form.field.optional', 'login');\n }\n\n return uiSchema;\n};\n\nexport default createUiSchemaForString;\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/**\n * Create UI Schema into remedation object base on remediation values\n */\nimport { _ } from '@okta/courage';\nimport createUiSchemaForBoolean from './ui-schema/ion-boolean-handler';\nimport createUiSchemaForObject from './ui-schema/ion-object-handler';\nimport createUiSchemaForString from './ui-schema/ion-string-handler';\n\nconst UISchemaHandlers = {\n string: createUiSchemaForString,\n boolean: createUiSchemaForBoolean,\n object: createUiSchemaForObject,\n};\n\n/**\n *\n * @param {AuthResult} transformedResp\n * @param {IONForm} remeditationForm\n */\nconst createUISchema = (transformedResp, remediationForm, settings) => {\n\n // For cases where field itself is a form, it has a formname and we are appending the formname to each field.\n // Sort of flat the structure in order to align Courage flatten Model. The flatten structure will be converted\n // back to object hierarchy through `Model.toJSON`.\n // For simplicity we are assuming that when field itself is a form its only one level deep.\n const remediationValue = _.chain(remediationForm.value || [])\n .filter(v => v.visible !== false)\n .map(v => {\n let nestedForm;\n if (v.form) {\n nestedForm = v.form;\n } else if (v.value?.form) {\n nestedForm = v.value.form;\n }\n\n if (nestedForm) {\n const inputGroupName = v.name;\n return nestedForm.value.map(input => {\n return Object.assign({}, input, { name: inputGroupName + '.' + input.name });\n });\n } else {\n return v;\n }\n })\n .flatten()\n .value();\n\n return remediationValue.map(ionFormField => {\n const uiSchemaDefaultConfig = {\n 'label-top': true,\n 'multirowError': true,\n 'data-se': `o-form-fieldset-${ionFormField.name}`,\n };\n const fieldType = ionFormField.type || 'string';\n const uiSchemaHandler = UISchemaHandlers[fieldType];\n const uiSchemaResult = uiSchemaHandler(ionFormField, remediationForm, transformedResp, createUISchema, settings);\n\n return Object.assign(\n {},\n ionFormField,\n uiSchemaDefaultConfig,\n uiSchemaResult,\n );\n });\n};\n\n/**\n *\n * @param {AuthResult} transformedResp\n */\nconst insertUISchema = (settings, transformedResp) => {\n if (transformedResp) {\n transformedResp.remediations = transformedResp.remediations.map(obj => {\n obj.uiSchema = createUISchema(transformedResp, obj, settings);\n return obj;\n });\n }\n return transformedResp;\n};\n\nexport default insertUISchema;\n\n/**\n * @typedef {Object} Authenticator\n * @property {string} label\n * @property {AuthenticatorValue} value\n */\n/**\n * @typedef {Object} AuthenticatorValue\n * @property {string} type Authenticator Type\n * @property {string} id Authenticator Org Authenticator ID\n * @property {AuthenticatorMethod[]} methods\n */\n/**\n * @typedef {Object} AuthenticatorEnrollment\n * @property {string} label\n * @property {AuthenticatorEnrollmentValue} value\n */\n/**\n * @typedef {Object} AuthenticatorEnrollmentValue\n * @property {string} authenticatorId Org Authenticator ID\n * @property {string} type Authenticator Type\n * @property {string} id Authenticator Enrollment ID\n * @property {AuthenticatorMethod[]} methods\n */\n/**\n * @typedef {Object} AuthenticatorMethod\n * @property {string} type Authenticator method type\n */\n/**\n * @typedef {Object} AuthenticatorOption\n * @property {string} label\n * @property {Object} form\n * @property {AuthenticatorOption[]} form.value\n */\n/**\n * @typedef {Object} AuthenticatorOptionValue\n * @property {string} name\n * @property {boolean} required\n * @property {string} value\n * @property {boolean} mutable\n */\n/**\n * @typedef {Object} IONForm\n * @property {string} name\n * @property {string[]} rel\n * @property {string} method\n * @property {string} href\n * @property {string} accepts\n * @property {IONFormField[]} value\n */\n/**\n * @typedef {Object} IONFormField\n * @property {string} name\n * @property {string=} type\n * @property {string=} required\n * @property {string=} secret\n * @property {string=} label\n * @property {Object[]} options\n * @property {Object=} form\n * @property {IONFormField[]} form.value\n */\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { FORMS } from '../RemediationConstants';\nimport { loc } from '@okta/courage';\n\nconst getCheckboxUiSchema = ({ label, type, required }) => ({\n // For Remember Me checkbox, we need the label only on the right side of it.\n placeholder: label,\n label: false,\n // Separating prop type for Backbone.Model\n // from html input type\n modelType: type,\n // uiSchema type is the html input type desired.\n type: 'checkbox',\n required: required || false,\n});\n\nconst getRadioUiSchema = ({ label, required, options }) => ({\n displayName: label,\n type: 'radio',\n required: required,\n options: options[0].value.value.options,\n sublabel: required? null : loc('oie.form.field.optional', 'login'),\n});\n\nconst getCheckboxUiSchemaWithDefaultValue = ({ label, type }) => ({\n placeholder: label,\n label: false,\n modelType: type,\n type: 'checkbox',\n // set required true so default value can be passed to optional attributes as well\n required: true,\n value: false,\n});\n\nconst createUiSchemaForBoolean = (ionFormField, remediationForm) => {\n if ([FORMS.CONSENT_ENDUSER, FORMS.CONSENT_ADMIN].includes(remediationForm.name)) {\n const scopes = remediationForm.scopes.map(({name, label, desc}) => {\n return {name, displayName: label, description: desc};\n });\n\n // setting 'type' here to add a specific View in FormInputFactory.create\n const type = remediationForm.name;\n\n return {type, scopes, options: ionFormField.options};\n } else if (Array.isArray(ionFormField.options) && ionFormField.options[0]?.value?.value?.inputType === 'radio') {\n return getRadioUiSchema(ionFormField);\n } else if (Array.isArray(ionFormField.options) && ionFormField.options[0]?.value?.value?.inputType === 'checkbox') {\n return getCheckboxUiSchemaWithDefaultValue(ionFormField);\n } else {\n return getCheckboxUiSchema(ionFormField);\n }\n};\n\nexport default createUiSchemaForBoolean;\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { loc, _ } from '@okta/courage';\nimport FactorUtil from 'util/FactorUtil';\nimport { AUTHENTICATOR_KEY } from '../../ion/RemediationConstants';\n\nconst { getPasswordComplexityDescriptionForHtmlList } = FactorUtil;\n\nconst getButtonDataSeAttr = function(authenticator) {\n if (authenticator.authenticatorKey) {\n const method = authenticator.value?.methodType ?\n '-' + authenticator.value?.methodType : '';\n return authenticator.authenticatorKey + method;\n }\n return '';\n};\n\n/* eslint complexity: [0, 0], max-statements: [2, 25] */\nconst getAuthenticatorData = function(authenticator, isVerifyAuthenticator) {\n const authenticatorKey = authenticator.authenticatorKey;\n const key = _.isString(authenticatorKey) ? authenticatorKey.toLowerCase() : '';\n let authenticatorData = {};\n let nicknameText = isVerifyAuthenticator ? authenticator.relatesTo?.nickname : undefined;\n switch (key) {\n case AUTHENTICATOR_KEY.EMAIL:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.email.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-email',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.PASSWORD:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.password.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-password',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.PHONE:\n Object.assign(authenticatorData, {\n nickname: nicknameText,\n description: isVerifyAuthenticator\n ? authenticator.relatesTo?.profile?.phoneNumber\n : loc('oie.phone.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-phone',\n noTranslateClassName: isVerifyAuthenticator ? 'no-translate' : '',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.SECURITY_QUESTION:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.security.question.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-security-question',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.WEBAUTHN:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.webauthn.description', 'login'),\n iconClassName: 'mfa-webauthn',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.OV:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? loc('oie.okta_verify.label', 'login')\n : loc('oie.okta_verify.authenticator.description', 'login'),\n iconClassName: 'mfa-okta-verify',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.GOOGLE_OTP:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.google_authenticator.authenticator.description', 'login'),\n iconClassName: 'mfa-google-auth',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.ON_PREM: {\n const vendorName = authenticator.relatesTo?.displayName ||\n loc('oie.on_prem.authenticator.default.vendorName', 'login');\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.on_prem.authenticator.description', 'login', [vendorName]),\n iconClassName: 'mfa-onprem',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.RSA:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.rsa.authenticator.description', 'login'),\n iconClassName: 'mfa-rsa',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.DUO:\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.duo.authenticator.description', 'login'),\n iconClassName: 'mfa-duo',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n\n case AUTHENTICATOR_KEY.IDP: {\n const idpName = authenticator.relatesTo?.displayName;\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.idp.authenticator.description', 'login', [idpName]),\n iconClassName: 'mfa-custom-factor',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n case AUTHENTICATOR_KEY.CUSTOM_OTP: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.custom_otp.description', 'login'),\n iconClassName: 'mfa-hotp',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.SYMANTEC_VIP: {\n const appName = authenticator.relatesTo?.displayName;\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.symantecVip.authenticator.description', 'login', [appName]),\n iconClassName: 'mfa-symantec',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.YUBIKEY: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? ''\n : loc('oie.yubikey.authenticator.description', 'login'),\n iconClassName: 'mfa-yubikey',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.CUSTOM_APP: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? authenticator?.relatesTo?.displayName\n : loc('oie.custom.app.authenticator.description', 'login', [authenticator.label]),\n noTranslateClassName: isVerifyAuthenticator ? 'no-translate' : '',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n iconClassName: 'mfa-custom-app-logo',\n logoUri : authenticator?.relatesTo?.logoUri || ''\n });\n break;\n }\n\n case AUTHENTICATOR_KEY.SMARTCARD: {\n Object.assign(authenticatorData, {\n description: isVerifyAuthenticator\n ? '' \n : loc('oie.smartcard.authenticator.description', 'login'),\n iconClassName: 'mfa-smartcard',\n buttonDataSeAttr: getButtonDataSeAttr(authenticator),\n });\n break;\n }\n\n }\n return authenticatorData;\n};\n\nexport function getAuthenticatorDataForEnroll(authenticator) {\n return getAuthenticatorData(authenticator);\n}\n\nexport function getAuthenticatorDataForVerification(authenticator) {\n return getAuthenticatorData(authenticator, true);\n}\n\nexport function getIconClassNameForBeacon(authenticatorKey) {\n return getAuthenticatorData({ authenticatorKey }).iconClassName;\n}\n\nexport function removeRequirementsFromError(errorJSON) {\n if (errorJSON.errorCauses?.length > 0\n && Array.isArray(errorJSON.errorCauses[0].errorSummary)\n && errorJSON.errorCauses[0].errorSummary.length > 0) {\n // Change from Array to string for all errors.\n errorJSON.errorCauses[0].errorSummary = errorJSON.errorCauses[0].errorSummary[0];\n\n // Overrides for particular error messages.\n const errorKey = errorJSON.errorCauses[0].errorKey?.length > 0 && errorJSON.errorCauses[0].errorKey[0];\n // Remove the requirements string only if this is requirements were not met error.\n if (errorKey === 'password.passwordRequirementsNotMet') {\n errorJSON.errorCauses[0].errorSummary = loc('registration.error.password.passwordRequirementsNotMet', 'login');\n }\n }\n return errorJSON;\n}\n\n/**\n * Get authenticator display name from {@code remediation}.\n *\n * @param {Object} remediation\n */\nexport function getAuthenticatorDisplayName(remediation) {\n return remediation.relatesTo?.value?.displayName;\n}\n\n// Re-export function from FactorUtil\nexport { getPasswordComplexityDescriptionForHtmlList };\n","const I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS = {\n /**\n * Mapping fields in the enroll profile remediation form to their i18n label for localization.\n */\n 'enroll-profile.userProfile.lastName': 'oie.user.profile.lastname',\n 'enroll-profile.userProfile.firstName': 'oie.user.profile.firstname',\n 'enroll-profile.userProfile.email': 'oie.user.profile.primary.email',\n 'enroll-profile.userProfile.secondEmail': 'oie.user.profile.secondary.email',\n 'enroll-profile.userProfile.middleName': 'oie.user.profile.middleName',\n 'enroll-profile.userProfile.honorificPrefix': 'oie.user.profile.honorificPrefix',\n 'enroll-profile.userProfile.honorificSuffix': 'oie.user.profile.honorificSuffix',\n 'enroll-profile.userProfile.title': 'oie.user.profile.title',\n 'enroll-profile.userProfile.displayName': 'oie.user.profile.displayName',\n 'enroll-profile.userProfile.nickName': 'oie.user.profile.nickName',\n 'enroll-profile.userProfile.profileUrl': 'oie.user.profile.profileUrl',\n 'enroll-profile.userProfile.mobilePhone': 'oie.user.profile.mobilePhone',\n 'enroll-profile.userProfile.primaryPhone': 'oie.user.profile.primaryPhone',\n 'enroll-profile.userProfile.streetAddress': 'oie.user.profile.streetAddress',\n 'enroll-profile.userProfile.city': 'oie.user.profile.city',\n 'enroll-profile.userProfile.state': 'oie.user.profile.state',\n 'enroll-profile.userProfile.zipCode': 'oie.user.profile.zipCode',\n 'enroll-profile.userProfile.postalCode': 'oie.user.profile.postalCode',\n 'enroll-profile.userProfile.countryCode': 'oie.user.profile.countryCode',\n 'enroll-profile.userProfile.postalAddress': 'oie.user.profile.postalAddress',\n 'enroll-profile.userProfile.preferredLanguage': 'oie.user.profile.preferredLanguage',\n 'enroll-profile.userProfile.locale': 'oie.user.profile.locale',\n 'enroll-profile.userProfile.timezone': 'oie.user.profile.timezone',\n 'enroll-profile.userProfile.userType': 'oie.user.profile.userType',\n 'enroll-profile.userProfile.employeeNumber': 'oie.user.profile.employeeNumber',\n 'enroll-profile.userProfile.costCenter': 'oie.user.profile.costCenter',\n 'enroll-profile.userProfile.organization': 'oie.user.profile.organization',\n 'enroll-profile.userProfile.division': 'oie.user.profile.division',\n 'enroll-profile.userProfile.department': 'oie.user.profile.department',\n 'enroll-profile.userProfile.managerId': 'oie.user.profile.managerId',\n 'enroll-profile.userProfile.manager': 'oie.user.profile.manager',\n 'enroll-profile.credentials.passcode': 'oie.password.label',\n};\n\nexport {\n I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS,\n};\n","/* eslint-disable max-len */\n/* eslint max-statements: [2, 25], complexity: [2, 15] */\n\n/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n///////////////////////////////////////////////////////////////////////////////\n// How this transformer work? //\n//\n// ## For Labels inside remediation forms\n// 1. Figure out Path for all Labels (for normal field, or options) or Placeholder (for checkbox),e.g.\n// - `identify.identifier`, this is the label for user name at identify page\n// - `select-authenticator-enroll.authenticator.email`,\n// this is for label for email authenticator at `select-authenticator-enroll` page\n// 2. Define a mapping between the path and i18n key. see `I18N_OVERRIDE_MAPPINGS`\n// - This mapping is subject to change when API starts sending i18n key along with label.\n// It probably becomes a mapping between API's i18n key and key in login.properties\n// in order to be backward compatible.\n// 3. Now find i18n value using such route: `i18n Path -> i18n key -> login.properties`\n// If found an i18n value, replace label by this i18n value.\n//\n// ## For top level messages\n// 1. Overwrite `message.message` if `message.i18n.key` exists in `login.properties`\n//\n// ## How to override mappings in I18N_OVERRIDE_MAPPINGS for localization?\n// Step 1. First search the string in login.properties and see if already exists or not\n// Step 2. Find idx response path, for eg. select-authenticator-enroll.authenticator.email\n// Step 3. Make that path a key and add it to I18N_OVERRIDE_MAPPINGS if doesn't exist already\n// Step 4. If you find a key in Step 1 that already exists, use it as value of key created in Step 3, \n// else create a new label `oie.your.new.label` and add it.\n// Step 5. If you create a new label then add that to login.properties file with proper string\n// oie.your.new.label = Your new string\n///////////////////////////////////////////////////////////////////////////////\n\nimport { _, loc, $ } from '@okta/courage';\nimport Bundles from 'util/Bundles';\nimport Logger from 'util/Logger';\nimport { getAuthenticatorDisplayName } from '../view-builder/utils/AuthenticatorUtil';\nimport { FORMS, AUTHENTICATOR_KEY } from './RemediationConstants';\nimport { I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS } from '../view-builder/views/enroll-profile/i18nBaseAttributeMappings';\n\nconst WEBAUTHN_API_GENERIC_ERROR_KEY = 'authfactor.webauthn.error';\n\nconst SECURITY_QUESTION_PREFIXES = [\n 'enroll-authenticator.security_question.credentials.questionKey.',\n 'challenge-authenticator.security_question.credentials.questionKey.',\n];\n\nconst I18N_OVERRIDE_MAPPINGS = {\n 'identify.identifier': 'primaryauth.username.placeholder',\n 'select-authenticator-unlock-account.identifier': 'primaryauth.username.placeholder',\n 'identify.credentials.passcode': 'primaryauth.password.placeholder',\n 'identify.rememberMe': 'oie.remember',\n 'enroll-profile.userProfile.rememberMe': 'oie.remember',\n \n 'identify-recovery.identifier': 'password.forgot.email.or.username.placeholder',\n\n 'select-authenticator-enroll.authenticator.duo': 'factor.duo',\n 'select-authenticator-enroll.authenticator.google_otp': 'oie.google_authenticator.label',\n 'select-authenticator-enroll.authenticator.okta_email': 'oie.email.label',\n 'select-authenticator-enroll.authenticator.okta_password': 'oie.password.label',\n 'select-authenticator-enroll.authenticator.okta_verify': 'oie.okta_verify.label',\n 'select-authenticator-enroll.authenticator.phone_number': 'oie.phone.label',\n 'select-authenticator-enroll.authenticator.rsa_token': 'factor.totpHard.rsaSecurId',\n 'select-authenticator-enroll.authenticator.security_question': 'oie.security.question.label',\n 'select-authenticator-enroll.authenticator.symantec_vip': 'factor.totpHard.symantecVip',\n 'select-authenticator-enroll.authenticator.webauthn': 'oie.webauthn.label',\n 'select-authenticator-enroll.authenticator.yubikey_token': 'oie.yubikey.label',\n\n 'select-authenticator-authenticate.authenticator.duo': 'factor.duo',\n 'select-authenticator-authenticate.authenticator.google_otp': 'oie.google_authenticator.label',\n 'select-authenticator-authenticate.authenticator.okta_email': 'oie.email.label',\n 'select-authenticator-authenticate.authenticator.okta_password': 'oie.password.label',\n 'select-authenticator-authenticate.authenticator.okta_verify.push': 'oie.okta_verify.push.title',\n 'select-authenticator-authenticate.authenticator.okta_verify.signed_nonce': 'oie.okta_verify.signed_nonce.label',\n 'select-authenticator-authenticate.authenticator.okta_verify.totp': 'oie.okta_verify.totp.title',\n 'select-authenticator-authenticate.authenticator.phone_number': 'oie.phone.label',\n 'select-authenticator-authenticate.authenticator.rsa_token': 'factor.totpHard.rsaSecurId',\n 'select-authenticator-authenticate.authenticator.security_question': 'oie.security.question.label',\n 'select-authenticator-authenticate.authenticator.symantec_vip': 'factor.totpHard.symantecVip',\n 'select-authenticator-authenticate.authenticator.webauthn': 'oie.webauthn.label',\n 'select-authenticator-authenticate.authenticator.yubikey_token': 'oie.yubikey.label',\n 'select-authenticator-authenticate.authenticator.custom_app': 'oie.custom.app.authenticator.title',\n\n 'select-authenticator-unlock-account.authenticator.okta_email': 'oie.email.label',\n 'select-authenticator-unlock-account.authenticator.phone_number': 'oie.phone.label',\n 'select-authenticator-unlock-account.authenticator.okta_verify.push': 'oie.okta_verify.push.title',\n\n 'authenticator-verification-data.okta_verify.authenticator.methodType.signed_nonce':\n 'oie.okta_verify.signed_nonce.label',\n 'authenticator-verification-data.okta_verify.authenticator.methodType.push': 'oie.okta_verify.push.title',\n 'authenticator-verification-data.okta_verify.authenticator.methodType.totp': 'oie.okta_verify.totp.title',\n\n 'authenticator-enrollment-data.phone_number.authenticator.phoneNumber': 'mfa.phoneNumber.placeholder',\n 'authenticator-enrollment-data.phone_number.authenticator.methodType.sms': 'oie.phone.enroll.sms.label',\n 'authenticator-enrollment-data.phone_number.authenticator.methodType.voice': 'oie.phone.enroll.voice.label',\n\n 'enroll-authenticator.okta_password.credentials.passcode': 'oie.password.passwordLabel',\n 'enroll-authenticator.okta_email.credentials.passcode': 'mfa.challenge.enterCode.placeholder',\n 'enroll-authenticator.phone_number.credentials.passcode': 'mfa.challenge.enterCode.placeholder',\n 'enroll-authenticator.security_question.sub_schema_local_credentials.0': 'oie.security.question.questionKey.label',\n 'enroll-authenticator.security_question.sub_schema_local_credentials.1': 'oie.security.question.createQuestion.label',\n 'enroll-authenticator.security_question.credentials.answer': 'mfa.challenge.answer.placeholder',\n 'enroll-authenticator.security_question.credentials.question': 'oie.security.question.createQuestion.label',\n 'enroll-authenticator.security_question.credentials.questionKey': 'oie.security.question.questionKey.label',\n 'enroll-authenticator.google_otp.credentials.passcode': 'oie.google_authenticator.otp.enterCodeText',\n 'enroll-authenticator.onprem_mfa.credentials.clientData': 'enroll.onprem.username.placeholder',\n 'enroll-authenticator.onprem_mfa.credentials.passcode': 'enroll.onprem.passcode.placeholder',\n 'enroll-authenticator.rsa_token.credentials.clientData': 'enroll.onprem.username.placeholder',\n 'enroll-authenticator.rsa_token.credentials.passcode': 'enroll.onprem.passcode.placeholder',\n 'enroll-authenticator.symantec_vip.credentials.credentialId': 'enroll.symantecVip.credentialId.placeholder',\n 'enroll-authenticator.symantec_vip.credentials.passcode': 'enroll.symantecVip.passcode1.placeholder',\n 'enroll-authenticator.symantec_vip.credentials.nextPasscode': 'enroll.symantecVip.passcode2.placeholder',\n 'enroll-authenticator.yubikey_token.credentials.passcode': 'oie.yubikey.passcode.label',\n\n 'enrollment-channel-data.email': 'oie.enroll.okta_verify.channel.email.label',\n 'enrollment-channel-data.phoneNumber': 'mfa.phoneNumber.placeholder',\n\n 'select-enrollment-channel.authenticator.channel.qrcode': 'oie.enroll.okta_verify.select.channel.qrcode.label',\n 'select-enrollment-channel.authenticator.channel.email': 'oie.enroll.okta_verify.select.channel.email.label',\n 'select-enrollment-channel.authenticator.channel.sms': 'oie.enroll.okta_verify.select.channel.sms.label',\n\n 'challenge-authenticator.okta_email.credentials.passcode': 'mfa.challenge.enterCode.placeholder',\n 'challenge-authenticator.okta_password.credentials.passcode': 'mfa.challenge.password.placeholder',\n 'challenge-authenticator.phone_number.credentials.passcode': 'mfa.challenge.enterCode.placeholder',\n 'challenge-authenticator.security_question.credentials.answer': 'mfa.challenge.answer.placeholder',\n 'challenge-authenticator.okta_verify.credentials.totp': 'oie.okta_verify.totp.enterCodeText',\n 'challenge-authenticator.google_otp.credentials.passcode': 'oie.google_authenticator.otp.enterCodeText',\n 'challenge-authenticator.onprem_mfa.credentials.passcode': 'mfa.challenge.enterCode.placeholder',\n 'challenge-authenticator.rsa_token.credentials.passcode': 'mfa.challenge.enterCode.placeholder',\n 'challenge-authenticator.custom_otp.credentials.passcode': 'oie.custom_otp.verify.passcode.label',\n 'challenge-authenticator.symantec_vip.credentials.passcode': 'oie.symantecVip.verify.passcode.label',\n 'challenge-authenticator.yubikey_token.credentials.passcode': 'oie.yubikey.passcode.label',\n 'challenge-authenticator.credentials.passcode': 'oie.password.label',\n\n 'reset-authenticator.okta_password.credentials.passcode': 'oie.password.newPasswordLabel',\n 'reset-authenticator.okta_password.confirmPassword': 'oie.password.confirmPasswordLabel',\n 'reset-authenticator.okta_password.credentials.revokeSessions': 'password.reset.revokeSessions',\n 'reenroll-authenticator.okta_password.credentials.passcode': 'oie.password.newPasswordLabel',\n 'reenroll-authenticator.okta_password.confirmPassword': 'oie.password.confirmPasswordLabel',\n 'reenroll-authenticator.okta_password.credentials.revokeSessions': 'password.reset.revokeSessions',\n 'reenroll-authenticator-warning.okta_password.credentials.passcode': 'oie.password.newPasswordLabel',\n 'reenroll-authenticator-warning.okta_password.confirmPassword': 'oie.password.confirmPasswordLabel',\n 'reenroll-authenticator-warning.okta_password.credentials.revokeSessions': 'password.reset.revokeSessions',\n 'enroll-authenticator.okta_password.confirmPassword': 'oie.password.confirmPasswordLabel',\n 'enroll-authenticator.okta_password.credentials.revokeSessions': 'password.reset.revokeSessions',\n 'incorrectPassword': 'oie.password.incorrect.message',\n\n 'profile-update.userProfile.secondEmail': 'oie.user.profile.secondary.email',\n\n 'user-code.userCode': 'device.code.activate.label',\n\n // Remap authn API errors to OIE\n 'api.authn.poll.error.push_rejected': 'oktaverify.rejected',\n\n // Remap duo API errors to OIE\n 'oie.authenticator.duo.method.duo.verification_timeout': 'oie.authenticator.duo.error',\n 'oie.authenticator.duo.method.duo.verification_failed': 'oie.authenticator.duo.error',\n\n 'idx.email.verification.required': 'registration.complete.confirm.text',\n 'tooManyRequests': 'oie.tooManyRequests',\n 'api.users.auth.error.POST_PASSWORD_UPDATE_AUTH_FAILURE': 'oie.post.password.update.auth.failure.error',\n 'security.access_denied': 'errors.E0000006',\n 'E0000009': 'errors.E0000009',\n 'E0000020': 'errors.E0000020',\n 'api.factors.error.sms.invalid_phone': 'oie.phone.invalid',\n 'app.ldap.password.reset.failed': 'errors.E0000017',\n 'oie.selfservice.unlock_user.challenge.failed.permissions': 'errors.E0000006',\n 'core.auth.factor.signedNonce.error.invalidEnrollment': 'core.auth.factor.signedNonce.error',\n 'core.auth.factor.signedNonce.error.invalidFactor': 'core.auth.factor.signedNonce.error',\n 'core.auth.factor.signedNonce.error.deletedDevice': 'core.auth.factor.signedNonce.error',\n 'core.auth.factor.signedNonce.error.invalidDeviceStatus': 'core.auth.factor.signedNonce.error.invalidDevice',\n\n // re-map autoPush: \"Send push automatically\"\n 'challenge-poll.custom_app.autoChallenge': 'autoPush', // authenticator-verification-custom-app-push-autochallenge\n 'challenge-poll.okta_verify.autoChallenge': 'autoPush', // authenticator-verification-okta-verify-push-autoChallenge-on\n 'authenticator-verification-data.authenticator.autoChallenge': 'autoPush', // authenticator-verification-data-okta-verify-push-autoChallenge-off.json\n 'authenticator-verification-data.okta_verify.authenticator.autoChallenge': 'autoPush',\n 'authenticator-verification-data.custom_app.authenticator.autoChallenge': 'autoPush',\n \n // Existing overrides\n ...I18N_BASE_ATTRIBUTE_ENROLL_PROFILE_MAPPINGS, //enroll-profile strings\n};\n\nconst I18N_PARAMS_MAPPING = {\n [FORMS.ENROLL_AUTHENTICATOR]: {\n [AUTHENTICATOR_KEY.ON_PREM]: {\n getParam: getAuthenticatorDisplayName,\n },\n [AUTHENTICATOR_KEY.RSA]: {\n getParam: getAuthenticatorDisplayName,\n },\n },\n};\n\n/**\n * For i18n keys that require string interpolation using values from \"params\".\n * {baseKey} : {params}\n */\nconst I18N_OVERRIDE_WITH_PARAMS_MAP = {\n 'registration.error.invalidLoginEmail': {\n Email: 'Email',\n },\n 'registration.error.doesNotMatchPattern': {\n Email: 'Email',\n },\n 'registration.error.notUniqueWithinOrg': {\n Email: 'Email',\n },\n};\n\n/**\n * For messages that need to be interpolated with param values.\n *\n * Enumerate each possible param interpolation and hardcode that into properties file.\n * This is to ensure proper translation.\n *\n * Example - a known param:\n *\n * input =\n * \"i18n\": {\n \"key\": \"registration.error.doesNotMatchPattern\",\n \"params\": [\n \"Email\"\n ]\n }\n * output = registration.error.doesNotMatchPattern.Email\n *\n * Example - an unknown param:\n *\n * input =\n * \"i18n\": {\n \"key\": \"registration.error.doesNotMatchPattern\",\n \"params\": [\n \"Custom Property\"\n ]\n }\n * output = registration.error.doesNotMatchPattern.custom\n *\n * @param {String} key\n * @param {String} param\n * @returns {String}\n */\nconst getI8nKeyUsingParams = (key, param) => {\n let i18nKey = key;\n\n if (I18N_OVERRIDE_WITH_PARAMS_MAP[i18nKey][param]) {\n i18nKey += `.${param}`;\n } else {\n i18nKey += '.custom';\n }\n return i18nKey;\n};\n\nconst getI18NParams = (remediation, authenticatorKey) => {\n const params = [];\n const formName = remediation.name;\n if (I18N_PARAMS_MAPPING[formName] &&\n I18N_PARAMS_MAPPING[formName][authenticatorKey]) {\n const config = I18N_PARAMS_MAPPING[formName][authenticatorKey];\n const param = config.getParam(remediation);\n params.push(param);\n }\n return params;\n};\n\nconst getI18nKey = (i18nPath) => {\n let i18nKey;\n // Extract security question value from i18nPath\n SECURITY_QUESTION_PREFIXES.forEach(prefix => {\n if (i18nPath.indexOf(prefix) === 0) {\n const securityQuestionValue = i18nPath.replace(prefix, '');\n i18nKey = `security.${securityQuestionValue}`;\n }\n });\n\n if (I18N_OVERRIDE_MAPPINGS[i18nPath]) {\n i18nKey = I18N_OVERRIDE_MAPPINGS[i18nPath];\n }\n\n if (i18nKey && !Bundles.login[i18nKey]) {\n Logger.warn(`expect i18n key ${i18nKey} for ${i18nPath} but not found in 'login' bundle.`);\n i18nKey = null;\n }\n\n return i18nKey;\n};\n\nconst doesI18NKeyExist = (i18nKey) => {\n return !!Bundles.login[i18nKey];\n};\n\n/**\n * Find i18n value using {@code i18nPath} if it exists.\n * Otherwise return {@code defaultValue}.\n *\n * @param {string} i18nPath\n * @param {string} defaultValue\n * @param {string[]} params\n */\nconst getI18NValue = (i18nPath, defaultValue, params = []) => {\n const i18nKey = getI18nKey(i18nPath);\n if (i18nKey) {\n return loc(i18nKey, 'login', params);\n } else {\n Logger.warn(`Avoid rendering unlocalized text sent from the API: ${defaultValue}`);\n return defaultValue;\n }\n};\n\nconst updateLabelForUiSchema = (remediation, uiSchema) => {\n if (uiSchema.mutable === false && uiSchema.name.indexOf('questionKey') < 0) {\n return;\n }\n Logger.info('i18n label transformer');\n Logger.info('\\t remediationName: ', remediation.name);\n Logger.info('\\t uiSchema: ', JSON.stringify(uiSchema));\n\n const authenticatorKey = remediation.relatesTo?.value?.key;\n const authenticatorKeyPath = authenticatorKey\n ? `.${remediation.relatesTo.value.key}`\n : '';\n\n const i18nPrefix = `${remediation.name}${authenticatorKeyPath}.`;\n let i18nPath = `${i18nPrefix}${uiSchema.name}`;\n\n if (uiSchema.type === 'text' && uiSchema.name.indexOf('questionKey') >= 0 && uiSchema.value !== 'custom') {\n i18nPath = `${i18nPath}.${uiSchema.value}`;\n }\n\n if (uiSchema.type === 'checkbox' && uiSchema.placeholder) {\n Logger.info('\\t 1: ', i18nPath);\n uiSchema.placeholder = getI18NValue(i18nPath, uiSchema.placeholder);\n }\n\n if (uiSchema.label) {\n Logger.info('\\t 2: ', i18nPath);\n const params = getI18NParams(remediation, authenticatorKey);\n uiSchema.label = uiSchema.customLabel ? uiSchema.label : getI18NValue(i18nPath, uiSchema.label, params);\n }\n if ($.isPlainObject(uiSchema.options)) {\n uiSchema.options = _.mapObject(uiSchema.options, (value, key) => {\n const i18nPathOption = `${i18nPath}.${key}`;\n Logger.info('\\t 3: ', i18nPathOption);\n return getI18NValue(i18nPathOption, value);\n });\n }\n if (Array.isArray(uiSchema.options)) {\n uiSchema.options.forEach(o => {\n if (!o.label) {\n return;\n }\n let i18nPathOption;\n if (o.authenticatorKey) {\n i18nPathOption = `${i18nPath}.${o.authenticatorKey}`;\n\n const methodType = o.value?.methodType;\n if (o.authenticatorKey === AUTHENTICATOR_KEY.OV && methodType) {\n i18nPathOption = `${i18nPathOption}.${methodType}`;\n }\n } else if (typeof o.value === 'string' || typeof o.value === 'number') { // value could be string, number, object or undefined.\n i18nPathOption = `${i18nPath}.${o.value}`;\n } else {\n i18nPathOption = i18nPath;\n }\n Logger.info('\\t 4: ', i18nPathOption);\n o.label = getI18NValue(i18nPathOption, o.label);\n });\n }\n\n if (Array.isArray(uiSchema.optionsUiSchemas)) {\n uiSchema.optionsUiSchemas.forEach(optionsUiSchema => {\n optionsUiSchema.forEach(uiSchema => updateLabelForUiSchema(remediation, uiSchema));\n });\n }\n\n};\n\nconst isWebAuthnAPIError = (i18nKey) => i18nKey.startsWith(WEBAUTHN_API_GENERIC_ERROR_KEY);\n\n/**\n * @typedef {Object} Message\n * @property {string} message\n * @property {Object=} i18n\n * @property {string} i18n.key\n * @property {string[]} i18n.params\n */\n/**\n * - If `message.i18n.key` exists and has a value in 'login.properties'\n * through the given key or via I18N_OVERRIDE_MAPPINGS, return the value.\n *\n * - returns `message.message` otherwise\n *\n * @param {Message} message\n */\nconst getMessage = (message) => {\n if (message.i18n?.key) {\n let i18nKey = message.i18n.key;\n let i18nParams = message.i18n.params || [];\n\n // TODO - remove this block once API fix is done - OKTA-398080\n // Sometimes API sends params: [\"\"] an array with empty string.\n // example - error-authenticator-enroll-password-common mock\n if (i18nParams.length === 1 && i18nParams[0] === '') {\n i18nParams = [];\n }\n\n if (I18N_OVERRIDE_MAPPINGS[message.i18n?.key]) {\n i18nKey = I18N_OVERRIDE_MAPPINGS[message.i18n?.key];\n } else if (I18N_OVERRIDE_WITH_PARAMS_MAP[i18nKey]) {\n const param = message.i18n.params?.[0];\n i18nKey = getI8nKeyUsingParams(i18nKey, param);\n i18nParams = i18nKey.endsWith('custom') ? [param] : [];\n }\n\n if (Bundles.login[i18nKey]) {\n Logger.info(`Override messages using i18n key ${i18nKey}`);\n // expect user config i18n properly.\n // e.g. the i18n value shall have placeholders like `{0}`, when params is not empty.\n return loc(i18nKey, 'login', i18nParams);\n }\n\n if (isWebAuthnAPIError(i18nKey)) {\n // The WebAuthn api error doesn't make much sense to a typical end user, but useful for developer.\n // So keep the api message in response, but show a generic error message on UI.\n return loc(WEBAUTHN_API_GENERIC_ERROR_KEY, 'login');\n }\n }\n\n Logger.warn(`Avoid rendering unlocalized text sent from the API: ${message.message}`);\n return message.message;\n};\n\n/**\n * @param {Object} error\n */\nconst getMessageFromBrowserError = (error) => {\n if (error.name) {\n const key = `oie.browser.error.${error.name}`;\n if (Bundles.login[key]) {\n Logger.info(`Override messages using i18n key ${key}`);\n // expect user config i18n properly.\n return loc(key, 'login');\n }\n }\n return error.message;\n};\n\n/**\n * - iff `message.i18n.key` exists return the key.\n *\n * @param {Message} message\n */\nconst getMessageKey = (message) => {\n return message?.i18n?.key || '';\n};\n\nconst uiSchemaLabelTransformer = (transformedResp) => {\n // Try to override label using i18n value\n if (Array.isArray(transformedResp.remediations)) {\n transformedResp.remediations\n .filter(remediation => Array.isArray(remediation.uiSchema) && remediation.uiSchema.length)\n .forEach(remediation => {\n remediation.uiSchema.forEach(uiSchema => updateLabelForUiSchema(remediation, uiSchema));\n });\n }\n\n // Try to override `messages` using i18n value.\n // 1. This is only handling top level `messages` object when response status is 200.\n // 2. See `IonResponseHelper.js` where handle `messages` object when none 200 response.\n // 3. Handling `messages` in remediation forms on 200 response is not considered yet.\n // Is that possible?\n if (Array.isArray(transformedResp.messages?.value)) {\n transformedResp.messages.value.forEach(message => {\n message.message = getMessage(message);\n });\n }\n return transformedResp;\n};\n\n/**\n * Has this i18n key been overridden for customization?\n * @param {String} i18nKey\n * @param {Object} settings\n * @returns Boolean\n */\nconst isCustomizedI18nKey = (i18nKey, settings) => {\n const language = settings.get('languageCode');\n const i18n = settings.get('i18n');\n const customizedProperty = i18n && i18n[language] && i18n[language][i18nKey];\n return !!customizedProperty;\n};\n\nexport {\n uiSchemaLabelTransformer as default,\n getMessage,\n getMessageKey,\n getI18NParams,\n getI18nKey,\n getI18NValue,\n doesI18NKeyExist,\n isCustomizedI18nKey,\n getMessageFromBrowserError\n};\n","import { IdxResponse } from \"@okta/okta-auth-js\";\nimport AppState from '../models/AppState';\nimport sessionStorageHelper from './sessionStorageHelper';\nimport { interactionCodeFlow } from './interactionCodeFlow';\nimport { FORMS } from \"../ion/RemediationConstants\";\nimport transformIdxResponse from '../ion/transformIdxResponse';\n\n\nexport async function updateAppState(appState: AppState, idxResponse: IdxResponse): Promise {\n const settings = appState.settings;\n\n const lastResponse = appState.get('idx');\n const useInteractionCodeFlow = settings.get('oauth2Enabled');\n if (useInteractionCodeFlow) {\n if (idxResponse.interactionCode) {\n // Although session.stateHandle isn't used by interation flow,\n // it's better to clean up at the end of the flow.\n sessionStorageHelper.removeStateHandle();\n // This is the end of the IDX flow, now entering OAuth\n const tokens = await interactionCodeFlow(settings, idxResponse);\n // At the successful end of IDX flow `clearAppStateCache` has been called, \n // but `setIonResponse` is not called, so `appState` is empty.\n // In such case `FormController` is not able to render any form.\n appState.unset('currentFormName', { silent: true });\n return tokens;\n } \n } else {\n // Do not save state handle for the first page loads.\n // Because there shall be no difference between following behavior\n // 1. bootstrap widget\n // -> save state handle to session storage\n // -> refresh page\n // -> introspect using sessionStorage.stateHandle\n // 2. bootstrap widget\n // -> do not save state handle to session storage\n // -> refresh page\n // -> introspect using options.stateHandle\n if (lastResponse) {\n sessionStorageHelper.setStateHandle(idxResponse?.context?.stateHandle);\n }\n // Login flows that mimic step up (moving forward in login pipeline) via internal api calls,\n // need to clear stored stateHandles.\n // This way the flow can maintain the latest state handle. For eg. Device probe calls\n if (appState.get('currentFormName') === FORMS.CANCEL_TRANSACTION) {\n sessionStorageHelper.removeStateHandle();\n }\n }\n\n // transform response\n const ionResponse = transformIdxResponse(settings, idxResponse, lastResponse);\n\n await appState.setIonResponse(ionResponse);\n}\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport Enums from 'util/Enums';\nimport { ConfigError } from 'util/Errors';\nimport { toQueryString } from '@okta/okta-auth-js';\nimport { getTypedOAuthError, RecoverableError } from 'util/OAuthErrors';\n\n// eslint-disable-next-line max-statements\nexport async function interactionCodeFlow(settings, idxResponse) {\n const { interactionCode } = idxResponse;\n const authClient = settings.getAuthClient();\n const transactionMeta = await authClient.idx.getSavedTransactionMeta();\n const state = authClient.options.state || transactionMeta?.state;\n\n // In remediation mode the transaction is owned by another client.\n const isRemediationMode = settings.get('mode') === 'remediation';\n if (isRemediationMode) {\n authClient.idx.clearTransactionMeta();\n }\n \n // server-side applications will want to received interaction_code as a query parameter\n // this option can also be used to force a redirect for client-side/SPA applications\n const shouldRedirect = settings.get('redirect') === 'always';\n if (shouldRedirect) {\n const redirectUri = settings.get('redirectUri');\n if (!redirectUri) {\n throw new ConfigError('\"redirectUri\" is required');\n }\n const qs = toQueryString({ 'interaction_code': interactionCode, state });\n window.location.assign(redirectUri + qs);\n return;\n }\n \n // Return a promise (or call success callback) to client-side apps in remediation mode.\n if (isRemediationMode) {\n settings.callGlobalSuccess(Enums.SUCCESS, {\n 'interaction_code': interactionCode,\n state\n });\n return;\n }\n\n // Operating in \"relying-party\" mode. The widget owns this transaction.\n // Complete the transaction client-side and call success/resolve promise\n if (!transactionMeta) {\n throw new ConfigError('Could not load transaction data from storage');\n }\n const { codeVerifier } = transactionMeta;\n return authClient.token.exchangeCodeForTokens({ codeVerifier, interactionCode })\n .then(({ tokens }) => {\n settings.callGlobalSuccess(Enums.SUCCESS, { tokens });\n })\n .catch(err => {\n const typedError = getTypedOAuthError(err);\n if (typedError instanceof RecoverableError && typedError.is('terminal')) {\n throw typedError;\n }\n settings.callGlobalError(err);\n })\n .finally(() => {\n // clear all meta related to this transaction\n authClient.idx.clearTransactionMeta();\n });\n}\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _ } from '@okta/courage';\nimport responseTransformer from './responseTransformer';\nimport uiSchemaTransformer from './uiSchemaTransformer';\nimport i18nTransformer from './i18nTransformer';\n\n// Transforms an IDX response to an ION response\nexport default function transformIdxResponse(settings, curResponse, lastResponse) {\n const ionResponse = _.compose(\n i18nTransformer,\n uiSchemaTransformer.bind({}, settings),\n responseTransformer.bind({}, settings),\n )(curResponse, lastResponse);\n return ionResponse;\n}\n","/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n IdxContext,\n IdxMessages,\n IdxResponse,\n RawIdxResponse\n} from '@okta/okta-auth-js';\nimport { loc } from '@okta/courage';\n\nexport interface LegacyIdxError {\n error: string;\n details: IdxResponse\n}\n\nexport interface StandardApiError {\n error: string;\n error_description: string;\n}\n\nexport function isInvalidRecoveryTokenError(error): error is StandardApiError {\n // special case: error from interact when passing an (invalid) recovery token\n return (error?.error === 'invalid_request' && error.error_description === 'The recovery token is invalid');\n}\n\nexport function formatInvalidRecoveryTokenError(error: StandardApiError) {\n // This error comes from `oauth2/interact` so is not an IDX error.\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: error.error_description,\n i18n: {\n key: 'oie.invalid.recovery.token'\n },\n class: 'ERROR'\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return idxError;\n}\n\nexport function isOIENotEnabledError(error): error is StandardApiError {\n // special case: error from interact when the Org does not have OIE enabled\n // The response is not in IDX format. See playground/mocks/data/oauth2/error-feature-not-enabled.json\n return (error?.error === 'access_denied' && error.error_description);\n}\n\nexport function formatOIENotEnabledError(error: StandardApiError) {\n // This error comes from `oauth2/interact` so the error is in OAuth format\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: error.error_description,\n i18n: {\n key: 'oie.feature.disabled'\n },\n class: 'ERROR'\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return error;\n}\n\nexport function isOIEConfigurationError(error): error is StandardApiError {\n return (error?.error && error.error_description);\n}\n\nexport function formatOIEConfigurationError(error) {\n // This error comes from `oauth2/interact` so the error is in OAuth format\n // simulate an IDX-JS error response\n const idxError = formatIDXError(error);\n const { details } = idxError;\n const messages: IdxMessages = {\n type: 'array',\n value: [\n {\n message: loc('oie.configuration.error', 'login'),\n class: 'ERROR',\n i18n: undefined\n }\n ],\n };\n details.rawIdxState.messages = messages;\n details.context.messages = messages;\n return error;\n}\n\nexport function formatIDXError(error: LegacyIdxError | StandardApiError | Error): LegacyIdxError {\n // Make the error object resemble an IDX response\n const idxError = error as LegacyIdxError;\n idxError.details = idxError.details || {} as IdxResponse;\n const { details } = idxError;\n details.rawIdxState = details.rawIdxState || {} as RawIdxResponse;\n details.context = details.context || {} as IdxContext;\n details.neededToProceed = details.neededToProceed || [];\n\n // Populate generic error message if there isn't any.\n if (!details.rawIdxState.messages) {\n const idxMessage: IdxMessages = {\n type: 'array',\n value: [\n {\n message: loc('oform.error.unexpected', 'login'),\n class: 'ERROR',\n i18n: undefined\n }\n ]\n };\n details.rawIdxState.messages = idxMessage;\n details.context.messages = idxMessage;\n }\n\n return idxError;\n}\n\nexport function formatError(error: string | Error | LegacyIdxError | StandardApiError) {\n // If the error is a string, wrap it in an Error object\n if (typeof error === 'string') {\n error = new Error(error);\n }\n\n // special case error handling\n\n // invalid reccovery token\n if (isInvalidRecoveryTokenError(error)) {\n return formatInvalidRecoveryTokenError(error);\n }\n\n // OIE is not enabled\n if (isOIENotEnabledError(error)) {\n return formatOIENotEnabledError(error);\n }\n\n // Other errors from /interact in OAuth format\n if (isOIEConfigurationError(error)) {\n return formatOIEConfigurationError(error);\n }\n\n error = formatIDXError(error);\n return error;\n}","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { _ } from '@okta/courage';\nimport { getMessage, getMessageKey } from './i18nTransformer';\n\nconst convertErrorMessageToErrorSummary = (formName, remediationValues = []) => {\n return _.chain(remediationValues)\n .filter(field => {\n return Array.isArray(field.messages?.value) && field.messages.value.length;\n })\n .map(field => {\n return {\n property: formName ? `${formName}.${field.name}` : field.name,\n errorSummary: field.messages.value.map(getMessage),\n errorKey: field.messages.value.map(getMessageKey),\n };\n })\n .value();\n};\n\n/**\n * Although time complexity is O(n^2),\n * the `array` is actually very small (size < 5),\n * hence performance doesn't matter.\n */\nconst uniqWith = (array, comparator) => {\n if (!Array.isArray(array)) {\n return [];\n }\n if (!_.isFunction(comparator) || array.length === 1) {\n return array;\n }\n\n const result = [];\n for (let i = 0; i < array.length; i++) {\n let seen = false;\n for (let j = i + 1; j < array.length; j++) {\n /* eslint max-depth: [2, 3] */\n if (comparator(array[i], array[j])) {\n seen = true;\n break;\n }\n }\n if (!seen) {\n result.push(array[i]);\n }\n }\n\n return result;\n};\n\n/**\n * returns errors\n * @example\n * errors = [\n * {property : fieldName1, errorSummary: [errorMessage1]},\n * {property : fieldName2, errorSummary: [errorMessage2]}\n * {property : fieldName3, errorSummary: [errorMessage31, errorMessage32]}\n * ]\n */\nconst getRemediationErrors = (res) => {\n let errors = [];\n\n if (!res.remediation || !Array.isArray(res.remediation.value) || res.remediation.value.length === 0) {\n return errors;\n }\n let remediationFormFields = res.remediation.value[0].value;\n\n if (!Array.isArray(remediationFormFields)) {\n return errors;\n }\n\n // error at field\n errors.push(convertErrorMessageToErrorSummary(null, remediationFormFields));\n\n _.each(remediationFormFields, (remediationForm) => {\n const formName = remediationForm.name;\n\n // error at form.value\n if (Array.isArray(remediationForm.form?.value)) {\n errors.push(convertErrorMessageToErrorSummary(formName, remediationForm.form.value));\n }\n\n // error at option.value.form.value\n if (Array.isArray(remediationForm.options)) {\n _.each(remediationForm.options, (option) => {\n if (Array.isArray(option.value?.form?.value)) {\n errors.push(convertErrorMessageToErrorSummary(formName, option.value.form.value));\n }\n });\n }\n });\n\n // API may return identical error on same field\n // thus run through `uniqWith`.\n // Check unit test for details.\n return uniqWith(_.flatten(errors), _.isEqual);\n};\n\n/**\n * return global error summary combined into one string\n * allErrors = 'error string1. error string2'\n */\nconst getGlobalErrors = (res) => {\n let allErrors = [];\n\n if (Array.isArray(res.messages?.value)) {\n allErrors = res.messages.value.map(getMessage);\n }\n\n return allErrors.join('. ');\n};\n\n/**\n * return array of error keys\n */\nconst getGlobalErrorKeys = (res) => {\n let allKeys = [];\n\n if (Array.isArray(res.messages?.value)) {\n allKeys = res.messages.value.map(getMessageKey);\n }\n\n return allKeys;\n};\n\nconst convertFormErrors = (response) => {\n let errors = {\n errorCauses: getRemediationErrors(response),\n errorSummary: getGlobalErrors(response),\n errorSummaryKeys: getGlobalErrorKeys(response),\n errorIntent: response.intent,\n };\n\n return {\n responseJSON: errors\n };\n};\n\nconst isIonErrorResponse = (response = {}) => {\n // check if error format is an ION response by looking for version attribute.\n // a little sloppy.\n return response.version;\n};\n\nconst isIdxSessionExpiredError = (response) => {\n const errorI18NKey = response?.context?.messages?.value[0]?.i18n?.key;\n return errorI18NKey && errorI18NKey === 'idx.session.expired';\n};\n\nexport default {\n convertFormErrors,\n isIonErrorResponse,\n isIdxSessionExpiredError\n};\n","/* eslint max-depth: [1,4] */\n/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// BaseLoginRouter contains the more complicated router logic - rendering/\n// transition, etc. Most router changes should happen in LoginRouter (which is\n// responsible for adding new routes)\nimport { _, $, Backbone, Router, loc, BaseRouterOptions } from '@okta/courage';\nimport Settings from 'models/Settings';\nimport Bundles from 'util/Bundles';\nimport BrowserFeatures from 'util/BrowserFeatures';\nimport ColorsUtil from 'util/ColorsUtil';\nimport Enums from 'util/Enums';\nimport { ConfigError } from 'util/Errors';\nimport Logger from 'util/Logger';\nimport LanguageUtil from 'util/LanguageUtil';\nimport AuthContainer from 'v1/views/shared/AuthContainer';\nimport Header from 'v1/views/shared/Header';\nimport AppState from './models/AppState';\nimport sessionStorageHelper from './client/sessionStorageHelper';\nimport {\n startLoginFlow,\n handleConfiguredFlow,\n updateAppState,\n} from './client';\n\nimport CookieUtil from 'util/CookieUtil';\nimport { formatError, LegacyIdxError, StandardApiError } from './client/formatError';\nimport { RenderError, RenderResult } from 'types';\nimport { OktaAuth, IdxResponse } from '@okta/okta-auth-js';\nimport Hooks from 'models/Hooks';\nimport IonHelper from './ion/IonResponseHelper';\n\nexport interface BaseLoginRouterOptions extends BaseRouterOptions, Backbone.RouterOptions {\n globalSuccessFn?: (res: RenderResult) => void;\n globalErrorFn?: (res: RenderError) => void;\n authClient?: OktaAuth;\n hooks: Hooks\n}\n\nclass BaseLoginRouter extends Router {\n Events: Backbone.Events = Backbone.Events; // also set on prototype\n hasControllerRendered = false;\n settings: Settings;\n appState: AppState;\n hooks: Hooks;\n header: Header;\n\n constructor(options: BaseLoginRouterOptions) {\n super(options);\n\n // Create a default success and/or error handler if\n // one is not provided.\n if (!options.globalSuccessFn) {\n options.globalSuccessFn = function() { /* dummy function */ };\n }\n if (!options.globalErrorFn) {\n options.globalErrorFn = function(err) {\n Logger.error(err);\n };\n }\n\n this.settings = new Settings(_.omit(options, 'el', 'hooks'), { parse: true });\n\n if (!options.el) {\n this.settings.callGlobalError(new ConfigError(loc('error.required.el')));\n }\n\n $('body > div').on('click', function() {\n // OKTA-69769 Tooltip wont close on iPhone/iPad\n // Registering a click handler on the first div\n // allows a tap that falls outside the tooltip\n // to be registered as a tap by iOS\n // and then the open tooltip will lose focus and close.\n });\n\n this.hooks = options.hooks;\n this.appState = new AppState({}, {\n settings: this.settings,\n hooks: this.hooks\n });\n\n const wrapper = new AuthContainer({ appState: this.appState });\n\n $(options.el).append(wrapper.render().$el);\n this.el = `#${Enums.WIDGET_CONTAINER_ID}`;\n this.header = new Header({\n el: this.el,\n appState: this.appState,\n settings: this.settings,\n });\n\n // Hide until unitial render\n this.hide();\n\n this.listenTo(this.appState, 'change:deviceFingerprint', this.updateDeviceFingerprint);\n this.listenTo(this.appState, 'restartLoginFlow', this.restartLoginFlow);\n }\n\n updateDeviceFingerprint() {\n const authClient = this.settings.getAuthClient();\n const fingerprint = this.appState.get('deviceFingerprint');\n if (fingerprint) {\n authClient.http.setRequestHeader('X-Device-Fingerprint', fingerprint);\n }\n }\n\n async handleIdxResponseFailure(error: LegacyIdxError = { error: 'unknown', details: undefined }) {\n // IDX errors will not call the global error handler\n error = formatError(error);\n await updateAppState(this.appState, error.details);\n }\n\n // Generic error handler for all exceptions\n async handleError(error: LegacyIdxError | StandardApiError | Error = { error: 'unknown', details: undefined }) {\n const formattedError = formatError({...error}); // format the error to resemble an IDX response\n await updateAppState(this.appState, formattedError.details);\n }\n\n /* eslint max-statements: [2, 36], complexity: [2, 16] */\n async render(Controller, options = {}) {\n // If url changes then widget assumes that user's intention was to initiate a new login flow,\n // so clear stored token to use the latest token.\n if (sessionStorageHelper.getLastInitiatedLoginUrl() !== window.location.href) {\n sessionStorageHelper.removeStateHandle();\n }\n // Since we have a wrapper view, render our wrapper and use its content\n // element as our new el.\n // Note: Render it here because we know dom is ready at this point\n if (!this.header.rendered()) {\n this.el = this.header.render().getContentEl();\n }\n\n // If we need to load a language (or apply custom i18n overrides), do\n // this now and re-run render after it's finished.\n if (!Bundles.isLoaded(this.settings.get('languageCode'))) {\n await LanguageUtil.loadLanguage(this.appState, this.settings);\n }\n\n let error;\n try {\n let idxResp = await startLoginFlow(this.settings);\n if (idxResp.error) {\n await this.handleIdxResponseFailure(idxResp.error);\n } else {\n if (this.settings.get('flow') && !this.hasControllerRendered) {\n idxResp = await handleConfiguredFlow(idxResp, this.settings);\n }\n\n // TODO: OKTA-494979 - temporary fix, remove when auth-js is upgraded to 6.6+\n if (!idxResp.requestDidSucceed && IonHelper.isIdxSessionExpiredError(idxResp)) {\n // clear transaction subsequent page loads do not use stale interactionHandle\n const authClient = this.settings.getAuthClient();\n authClient.transactionManager.clear();\n }\n\n await updateAppState(this.appState, idxResp);\n }\n } catch (exception) {\n if (exception.is?.('terminal')) {\n this.appState.setNonIdxError(exception);\n } else {\n error = exception;\n await this.handleError(exception);\n }\n } finally {\n // These settings should only be used one time, for initial render\n this.settings.unset('stateToken');\n this.settings.unset('proxyIdxResponse');\n }\n\n // Load the custom colors only on the first render\n if (this.settings.get('colors.brand') && !ColorsUtil.isLoaded()) {\n const colors = {\n brand: this.settings.get('colors.brand'),\n };\n const cspNonce = this.settings.get('cspNonce');\n\n ColorsUtil.addStyle(colors, cspNonce);\n }\n\n // Show before initial render\n this.show();\n\n // render Controller\n this.unload();\n const controllerOptions = _.extend({\n el: this.el,\n settings: this.settings,\n appState: this.appState\n }, options);\n this.controller = new Controller(controllerOptions);\n\n // Bubble up all controller events\n this.listenTo(this.controller, 'all', this.trigger);\n\n this.controller.render();\n\n this.hasControllerRendered = true;\n\n // This will reject the promise returned from renderEl\n if (error) {\n this.settings.callGlobalError(error);\n }\n\n // -- TODO: OKTA-244631 How to surface up the CORS error in IDX?\n // -- The `err` object from idx.js doesn't have XHR object\n // Global error handling for CORS enabled errors\n // if (err.xhr && BrowserFeatures.corsIsNotEnabled(err.xhr)) {\n // this.settings.callGlobalError(new UnsupportedBrowserError(loc('error.enabled.cors')));\n // return;\n // }\n }\n\n /**\n * When \"Remember My Username\" is enabled, we save the identifier in a cookie\n * so that the next time the user visits the SIW, the identifier field can be \n * pre-filled with this value.\n */\n updateIdentifierCookie(idxResponse: IdxResponse) {\n if (this.settings.get('features.rememberMe')) {\n // Update the cookie with the identifier\n const user = idxResponse?.context?.user;\n const { identifier } = user?.value || {};\n if (identifier) {\n CookieUtil.setUsernameCookie(identifier);\n }\n } else {\n // We remove the cookie explicitly if this feature is disabled.\n CookieUtil.removeUsernameCookie();\n } \n }\n\n hasAuthenticationSucceeded(idxResponse: IdxResponse) {\n // Check whether authentication has succeeded. This is done by checking the server response\n // and seeing if either the 'success' or 'successWithInteractionCode' objects are present.\n return idxResponse?.rawIdxState?.success || idxResponse?.rawIdxState?.successWithInteractionCode;\n }\n\n restartLoginFlow() {\n // clear all transaction data and saved IDX response\n this.settings.getAuthClient().transactionManager.clear();\n this.appState.set('idx', undefined);\n\n // Clear the recoveryToken, if any\n const authClient = this.settings.getAuthClient();\n delete authClient.options['recoveryToken'];\n this.settings.unset('recoveryToken');\n // clear otp (email magic link), if any\n this.settings.unset('otp');\n\n // remove all event listeners from current controller instance. A new instance will be created in render().\n this.controller.stopListening();\n\n // Re-render the widget\n this.render(this.controller.constructor);\n }\n\n start() {\n const pushState = BrowserFeatures.supportsPushState();\n Router.prototype.start.call(this, { pushState: pushState });\n }\n\n hide() {\n this.header.$el.hide();\n }\n\n show() {\n this.header.$el.show();\n }\n\n remove() {\n this.unload();\n this.header.$el.remove();\n this.stopListening(this.appState);\n this.stopListening(this.settings);\n Bundles.remove();\n Backbone.history.stop();\n }\n}\n\n// Add \"Events\" to prototype for compatibility with existing code\nBaseLoginRouter.prototype.Events = Backbone.Events;\n\nexport default BaseLoginRouter;\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n// This file attempts to mimic the behavior of a popular hack of the V1 Router, which allowed for the widget to be\n// initialized into a specific form/flow (like Register or Reset Password). To achieve this, an attempt is made to\n// call `idxState.proceed()` with a known remediation depending on the `flow` configuration to \"step\" the widget\n// (and the server's state) to the desired flow/form. The remediation is not guaranteed to be available \n// and will default to the original idx response otherwise. This depends on the Org configurations\nimport { ConfigError } from 'util/Errors';\nimport Logger from 'util/Logger';\nimport { FORMS } from '../ion/RemediationConstants';\nimport { CONFIGURED_FLOW } from './constants';\n\n\n// checks if \"desired\" remeidation is available before calling `.proceed`\n// if not available, returns original idxResponse (and logs warning)\nasync function proceedIfAvailable(idxState, remediation, flow) {\n const rem = idxState.neededToProceed.find(item => item.name === remediation);\n if (!rem) {\n Logger.warn('Expected remediation not found, Org may be misconfigured for this flow');\n return idxState;\n }\n\n try {\n const nextIdxState = await idxState.proceed(remediation);\n return nextIdxState;\n }\n catch (err) {\n // catches and handles `Unknown remediation` errors thrown okta-idx-js\n if (typeof err === 'string' && err.startsWith('Unknown remediation choice')) {\n Logger.warn(`flow [${flow}] not valid with current Org configurations`);\n return idxState;\n }\n else {\n // do not catch non-`Unknown remediation` errors here\n throw err;\n }\n }\n}\n\n// attempts to \"step into\" a specific flow by calling `.proceed` with a specific remeidation (or calls an action)\n// the \"desired\" remeidation is not guaranteed to be available, depends upon Org configurations\nasync function stepIntoSpecificIdxFlow(idxState, flow='default') {\n switch (flow) {\n case CONFIGURED_FLOW.DEFAULT:\n case CONFIGURED_FLOW.PROCEED:\n case CONFIGURED_FLOW.LOGIN:\n // default IDX response from interact is \"Login\" page/flow. Do nothing\n return idxState;\n\n // step logic is handled by auth-js\n case CONFIGURED_FLOW.REGISTRATION:\n case CONFIGURED_FLOW.RESET_PASSWORD:\n return idxState;\n\n case CONFIGURED_FLOW.UNLOCK_ACCOUNT:\n // requires: introspect -> identify-recovery -> select-authenticator-unlock-account\n return await proceedIfAvailable(idxState, FORMS.UNLOCK_ACCOUNT, flow);\n\n default:\n Logger.warn(`Unknown \\`flow\\` value: ${flow}`);\n throw new ConfigError('Invalid \"flow\" configuration');\n }\n}\n\n// ensures the `flow` stored in the transaction meta matches the flow configuration\n// if they do not match, abandon the current (meta) flow and start a new (configured) flow\nexport async function handleConfiguredFlow(originalResp, settings) {\n const authClient = settings.getAuthClient();\n const configuredFlow = authClient.idx.getFlow();\n\n // attempts to step into the desired flow\n const idxState = await stepIntoSpecificIdxFlow(originalResp, configuredFlow);\n return idxState;\n}\n","import { View, $ } from '@okta/courage';\nimport Animations from 'util/Animations';\nimport Enums from 'util/Enums';\n\nexport default View.extend({\n HeaderBeacon: null,\n\n initialize() {\n if (this.HeaderBeacon) {\n this.add(this.HeaderBeacon);\n }\n },\n\n postRender() {\n const mainContentContainer = $(`#${Enums.WIDGET_CONTAINER_ID}`);\n\n if (this.HeaderBeacon) {\n mainContentContainer.removeClass('no-beacon');\n\n // animate beacon\n const beaconContainer = this.$el.find('[data-type=\"beacon-container\"]');\n Animations.explode(beaconContainer);\n } else {\n mainContentContainer.addClass('no-beacon');\n }\n },\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\n\nexport default View.extend({\n\n template: hbs('{{label}}'),\n\n tagName: 'a',\n\n attributes() {\n let href = this.options.href || '#';\n return {\n 'data-se': this.options.name,\n href: href,\n target: this.options.target,\n };\n },\n\n className() {\n const names = ['link'];\n if (this.options.name) {\n const nameToClass = this.options.name.replace(/[ ]/g, '-');\n names.push(`js-${nameToClass}`);\n }\n return names.join(' ');\n },\n\n postRender() {\n // TODO OKTA-245224: create sub class of Link to dispatch following if/else logic.\n if (!this.options.href) {\n this.$el.click((event) => {\n event.preventDefault();\n\n const {\n appState,\n formName,\n actionPath,\n clickHandler,\n } = this.options;\n\n if (clickHandler) {\n clickHandler();\n } else if (formName) {\n appState.trigger('switchForm', formName);\n } else if (actionPath) {\n appState.trigger('invokeAction', actionPath);\n }\n });\n }\n }\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View, $ } from '@okta/courage';\nimport Link from './Link';\n\nexport default View.extend({\n initialize() {\n View.prototype.initialize.apply(this, arguments);\n const textViewOptions = this.options.additionalOptions;\n const linkName = this.options.name;\n const linkOptions = Object.assign({}, this.options,\n {\n 'type': 'link',\n 'aria-expanded': false,\n 'clickHandler': function() {\n $(textViewOptions.selector).slideToggle(200, () => {\n $(`.js-${linkName}`).attr('aria-expanded', $(textViewOptions.selector).is(':visible'));\n });\n }\n });\n this.add(Link, { options: linkOptions });\n this.add(textViewOptions.view);\n },\n\n postRender() {\n const textViewOptions = this.options.additionalOptions;\n this.$(textViewOptions.selector).hide();\n },\n});\n","import { loc, _ } from '@okta/courage';\nimport { ACTIONS, FORMS as RemediationForms } from '../../ion/RemediationConstants';\n\nconst { ENROLLED_PASSWORD_RECOVERY_LINK, ORG_PASSWORD_RECOVERY_LINK } = ACTIONS;\n\nconst getSwitchAuthenticatorLink = (appState) => {\n if (appState.getRemediationAuthenticationOptions(RemediationForms.SELECT_AUTHENTICATOR_AUTHENTICATE).length > 1) {\n return [\n {\n 'type': 'link',\n 'label': loc('oie.verification.switch.authenticator', 'login'),\n 'name': 'switchAuthenticator',\n 'formName': RemediationForms.SELECT_AUTHENTICATOR_AUTHENTICATE,\n }\n ];\n }\n\n if (appState.getRemediationAuthenticationOptions(RemediationForms.SELECT_AUTHENTICATOR_ENROLL).length >= 1) {\n return [\n {\n 'type': 'link',\n 'label': loc('oie.enroll.switch.authenticator', 'login'),\n 'name': 'switchAuthenticator',\n 'formName': RemediationForms.SELECT_AUTHENTICATOR_ENROLL,\n }\n ];\n }\n\n return [];\n};\n\nconst getForgotPasswordLink = (appState, settings) => {\n const forgotPasswordLink = {\n 'type': 'link',\n 'label': loc('forgotpassword', 'login'),\n 'name': 'forgot-password',\n };\n\n const customForgotPasswordHref = settings.get('helpLinks.forgotPassword');\n\n if (customForgotPasswordHref) {\n return [\n Object.assign({}, {\n 'href': customForgotPasswordHref,\n 'label': loc('forgotpassword', 'login'),\n 'name': 'forgot-password',\n }),\n ];\n }\n\n // at identify page when only Org Authenticator Password may be available\n else if (appState.getActionByPath(ORG_PASSWORD_RECOVERY_LINK)) {\n return [\n Object.assign({}, forgotPasswordLink, { actionPath: ORG_PASSWORD_RECOVERY_LINK })\n ];\n }\n\n // at password verify page\n else if (appState.getActionByPath(ENROLLED_PASSWORD_RECOVERY_LINK)) {\n return [\n Object.assign({}, forgotPasswordLink, { actionPath: ENROLLED_PASSWORD_RECOVERY_LINK })\n ];\n }\n\n return [];\n};\n\nconst goBackLink = (appState) => {\n if (appState.hasRemediationObject(RemediationForms.SELECT_AUTHENTICATOR_ENROLL)) {\n return [\n {\n 'type': 'link',\n 'label': loc('oie.go.back', 'login'),\n 'name': 'go-back',\n 'formName': RemediationForms.SELECT_AUTHENTICATOR_ENROLL,\n }\n ];\n }\n\n return [];\n};\n\nconst getSkipSetupLink = (appState, linkName) => {\n if (appState.hasRemediationObject(RemediationForms.SKIP)) {\n return [\n {\n 'type': 'link',\n 'label': linkName ?? loc('oie.enroll.skip.setup', 'login'),\n 'name': 'skip-setup',\n 'actionPath': RemediationForms.SKIP,\n }\n ];\n }\n\n return [];\n};\n\n// When there is a 'cancel' object in remediation\nconst getSignOutLink = (settings, options = {}) => {\n if (settings?.get('backToSignInUri')) {\n return [\n {\n 'label': loc('goback', 'login'),\n 'name': 'cancel',\n 'href': settings.get('backToSignInUri')\n },\n ];\n }\n\n return [\n {\n 'actionPath': 'cancel',\n 'label': !options.label ? loc('goback', 'login') : options.label,\n 'name': 'cancel',\n 'type': 'link'\n },\n ];\n};\n\n// Use it to create a widget configured link in the absence of `cancel` object in remediation\nconst getBackToSignInLink = ({settings, appState}) => {\n const link = {};\n\n // If backToSignInLink is set, use this value for all scenarios\n if (settings?.get('backToSignInUri')) {\n link.href = settings.get('backToSignInUri');\n }\n // fallback for embedded scenarios\n else if (settings?.get('oauth2Enabled')) {\n link.clickHandler = () => {\n appState.trigger('restartLoginFlow');\n };\n }\n // fallback for okta-hosted scenarios (backend should set signOutLink or backToSignOutLink)\n else {\n link.href = settings?.get('baseUrl');\n }\n\n return [\n {\n 'type': 'link',\n 'label': loc('goback', 'login'),\n 'name': 'go-back',\n ...link\n },\n ];\n};\n\nconst getReloadPageButtonLink = () => {\n return [\n {\n 'type': 'link',\n 'label': loc('oie.try.again', 'login'),\n 'name': 'try-again',\n 'href': window.location,\n 'className': 'button button-primary text-align-c'\n },\n ];\n};\n\nconst getSignUpLink = (appState, settings) => {\n const signupLink = [];\n\n if (appState.hasRemediationObject(RemediationForms.SELECT_ENROLL_PROFILE)) {\n const signupLinkData = {\n 'type': 'link',\n 'label': loc('oie.registration.form.title', 'login'),\n 'name': 'enroll'\n };\n if (_.isFunction(settings.get('registration.click'))) {\n signupLinkData.clickHandler = settings.get('registration.click');\n } else {\n signupLinkData.actionPath = RemediationForms.SELECT_ENROLL_PROFILE;\n }\n signupLink.push(signupLinkData);\n }\n\n return signupLink;\n};\n\nconst getFactorPageCustomLink = (appState, settings) => {\n const factorPageCustomLink = [];\n const formsNeedFactorPageCustomLink = [\n RemediationForms.CHALLENGE_AUTHENTICATOR,\n RemediationForms.SELECT_AUTHENTICATOR_AUTHENTICATE,\n RemediationForms.CHALLENGE_POLL,\n RemediationForms.AUTHENTICATOR_VERIFICATION_DATA,\n ];\n\n if (!appState.get('isPasswordRecovery') && formsNeedFactorPageCustomLink.includes(appState.get('currentFormName'))) {\n const helpLinksFactorPageLabel = settings.get('helpLinks.factorPage.text');\n const helpLinksFactorPageHref = settings.get('helpLinks.factorPage.href');\n\n if (helpLinksFactorPageLabel && helpLinksFactorPageHref) {\n factorPageCustomLink.push({\n type: 'link',\n label: helpLinksFactorPageLabel,\n name: 'factorPageHelpLink',\n href: helpLinksFactorPageHref,\n target: '_blank',\n });\n }\n }\n return factorPageCustomLink;\n};\n\nexport {\n getSwitchAuthenticatorLink,\n getForgotPasswordLink,\n goBackLink,\n getSignUpLink,\n getSignOutLink,\n getBackToSignInLink,\n getSkipSetupLink,\n getReloadPageButtonLink,\n getFactorPageCustomLink,\n};\n","import { View, _, $} from '@okta/courage';\nimport Link from '../components/Link';\nimport ToggleTextLink from '../components/ToggleTextLink';\nimport { getSignOutLink } from '../utils/LinksUtil';\n\n/**\n * When `href` is present, the Link behaviors as normal link (anchor element).\n * When `actionPath` is present, the Link behaviors as link button\n * on which user clicks, will trigger the action `actionPath`.\n * When `formName` is present, the link behaviors as link button\n * on which user clicks, will submit a remediation form.\n *\n * @typedef {Object} Link\n * @property {string} label\n * @property {string} name\n * @property {string=} href\n * @property {string=} actionPath\n * @property {string=} formName\n */\n\n\nexport default View.extend({\n\n className: 'auth-footer',\n\n /**\n * {Link[]} links\n */\n links: [],\n\n /**\n * View\n * adds any view to the footer in footer info section\n */ \n footerInfo: null,\n\n /**\n * Boolean\n * If false then 'Back to sign in' does not get added to the view\n */\n hasBackToSignInLink: true,\n\n initialize() {\n let links = _.resultCtx(this, 'links', this);\n const footerInfo = _.resultCtx(this, 'footerInfo', this);\n const hasBackToSignInLink = _.resultCtx(this, 'hasBackToSignInLink', this);\n\n // safe check\n // 1. avoid none array from override\n // 2. ignore any none plain object arguments\n if (!Array.isArray(links)) {\n links = [];\n } else {\n links = links.filter(l => $.isPlainObject(l));\n }\n\n // add 'back to sign in' link if the form qualifies for it by default.\n // Previously called cancel/Sign Out links\n if (this.options.appState.shouldShowSignOutLinkInCurrentForm(\n this.options.settings.get('features.hideSignOutLinkInMFA') ||\n this.settings.get('features.mfaOnlyFlow')) && hasBackToSignInLink) {\n links = links.concat(getSignOutLink(this.options.settings));\n }\n\n links.forEach(link => {\n let LinkView = Link;\n if (link.type === 'toggle-text-link') {\n LinkView = ToggleTextLink;\n }\n this.add(LinkView, { options: link });\n });\n\n if (footerInfo) {\n this.add(View.extend({\n className: 'footer-info',\n }));\n\n this.add(footerInfo, '.footer-info');\n }\n }\n});\n","import { createButton, loc } from '@okta/courage';\nimport { FORMS as RemediationForms } from '../../ion/RemediationConstants';\n\nconst skipAll = createButton({\n className: 'button-primary button skip-all',\n title: function() {\n return loc('oie.optional.authenticator.button.title', 'login');\n },\n click: function() {\n this.options.appState.trigger('invokeAction', RemediationForms.SKIP);\n }\n});\n\nexport default skipAll;","export const SHOW_RESEND_TIMEOUT = 30000;\nexport const WARNING_TIMEOUT = 30000;\nexport const CHALLENGE_TIMEOUT = 300000;\nexport const MS_PER_SEC = 1000;\nexport const UNIVERSAL_LINK_POST_DELAY = 500;\nexport const CANCEL_POLLING_ACTION = 'authenticatorChallenge-cancel';\nexport const AUTHENTICATOR_CANCEL_ACTION = 'currentAuthenticator-cancel';\nexport const WIDGET_FOOTER_CLASS = 'siw-main-footer';\nexport const FASTPASS_FALLBACK_SPINNER_TIMEOUT = 4000;\nexport const IDENTIFIER_FLOW = 'IDENTIFIER';\nexport const OV_UV_ENABLE_BIOMETRICS_FASTPASS_DESKTOP \n = 'oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.desktop';\nexport const OV_UV_ENABLE_BIOMETRICS_FASTPASS_MOBILE \n = 'oie.authenticator.oktaverify.method.fastpass.verify.enable.biometrics.mobile';\nexport const AUTHENTICATOR_ALLOWED_FOR_OPTIONS = {\n ANY: 'any',\n SSO: 'sso',\n RECOVERY: 'recovery',\n};\nexport const REQUEST_PARAM_AUTHENTICATION_CANCEL_REASON = 'reason';\nexport const LOOPBACK_RESPONSE_STATUS_CODE = 'statusCode';\nexport const AUTHENTICATION_CANCEL_REASONS = {\n LOOPBACK_FAILURE: 'OV_UNREACHABLE_BY_LOOPBACK',\n OV_ERROR: 'OV_RETURNED_ERROR',\n USER_CANCELED: 'USER_CANCELED',\n};\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { ListView, loc, View, createButton } from '@okta/courage';\nimport { FORMS as RemediationForms } from '../../ion/RemediationConstants';\nimport skipAll from './SkipOptionalEnrollmentButton';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport { AUTHENTICATOR_ALLOWED_FOR_OPTIONS } from '../utils/Constants';\n\nconst AuthenticatorRow = View.extend({\n className: 'authenticator-row clearfix',\n template: hbs`\n
            \n {{#if logoUri}}\n
            \n {{else}}\n
            \n {{/if}}\n
            \n
            \n

            {{label}}

            \n {{#if description}}\n

            {{description}}

            \n {{/if}}\n {{#if authenticatorUsageText}}\n

            {{authenticatorUsageText}}

            \n {{/if}}\n
            \n
            \n `,\n postRender: function() {\n View.prototype.postRender.apply(this, arguments);\n if (this.model.get('logoUri')) {\n this.el.querySelector('.custom-app-logo').style.backgroundImage = `url(${this.model.get('logoUri')})`;\n }\n },\n children: function() {\n return [[createButton({\n className: 'button select-factor',\n title: function() {\n return loc('oie.enroll.authenticator.button.text', 'login');\n },\n click: function() {\n this.model.trigger('selectAuthenticator', this.model.get('value'));\n }\n }), '.authenticator-button']];\n },\n minimize: function() {\n this.$el.addClass('authenticator-row-min');\n },\n getTemplateData() {\n let authenticatorUsageText;\n const allowedFor = this.model.get('relatesTo').allowedFor;\n\n if (allowedFor) {\n switch (allowedFor) {\n case AUTHENTICATOR_ALLOWED_FOR_OPTIONS.ANY:\n authenticatorUsageText = loc('oie.enroll.authenticator.usage.text.access.recovery', 'login');\n break;\n case AUTHENTICATOR_ALLOWED_FOR_OPTIONS.RECOVERY:\n authenticatorUsageText = loc('oie.enroll.authenticator.usage.text.recovery', 'login');\n break;\n case AUTHENTICATOR_ALLOWED_FOR_OPTIONS.SSO:\n authenticatorUsageText = loc('oie.enroll.authenticator.usage.text.access', 'login');\n break;\n }\n }\n\n const data = View.prototype.getTemplateData.apply(this, arguments);\n data.authenticatorUsageText = authenticatorUsageText;\n\n return data;\n },\n});\n\nexport default ListView.extend({\n\n className: 'authenticator-enroll-list authenticator-list',\n\n item: AuthenticatorRow,\n\n itemSelector: '.list-content',\n\n initialize: function() {\n this.listenTo(this.collection,'selectAuthenticator', function(data) {\n this.model.set(this.options.name, data);\n this.options.appState.trigger('saveForm', this.model);\n });\n this.hasOptionalFactors = this.options.appState.hasRemediationObject(RemediationForms.SKIP);\n if (this.hasOptionalFactors) {\n this.add(skipAll);\n }\n },\n\n template: hbs`
            {{title}}
            `,\n\n getTemplateData() {\n // presence of the skip remediation form tells us that the authenticators are all optional\n const title = this.hasOptionalFactors? loc('oie.setup.optional', 'login'):loc('oie.setup.required', 'login');\n\n return {\n title\n };\n }\n\n});\n","/*!\n * Copyright (c) 2020, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\nimport { ListView, View, createButton, loc } from '@okta/courage';\nimport hbs from '@okta/handlebars-inline-precompile';\n\nconst AuthenticatorRow = View.extend({\n className: 'authenticator-row clearfix',\n template: hbs`\n
            \n {{#if logoUri}}\n
            \n {{else}}\n
            \n {{/if}}\n
            \n
            \n
            \n

            {{label}}

            \n {{#if description}}\n

            {{description}}

            \n {{/if}}\n {{#if nickname}}\n

            {{nickname}}

            \n {{/if}}\n
            \n
            \n
            \n `,\n postRender: function() {\n View.prototype.postRender.apply(this, arguments);\n const logoUri = this.model.get('logoUri');\n if (logoUri) {\n this.el.querySelector('.custom-logo').style.backgroundImage = `url(${logoUri})`;\n }\n },\n children: function(){\n return [[createButton({\n className: 'button select-factor',\n title: function() {\n return loc('oie.verify.authenticator.button.text', 'login');\n },\n click: function() {\n this.model.trigger('selectAuthenticator', this.model.get('value'));\n }\n }), '.authenticator-button']];\n },\n minimize: function() {\n this.$el.addClass('authenticator-row-min');\n }\n});\n\nexport default ListView.extend({\n\n className: 'authenticator-verify-list authenticator-list',\n\n item: AuthenticatorRow,\n\n itemSelector: '.list-content',\n\n initialize: function() {\n this.listenTo(this.collection,'selectAuthenticator', this.handleSelect);\n this.listenTo(this.model, 'invalid', this.handleModelInvalid);\n },\n \n handleModelInvalid(data, error) {\n if (this.options.name in error && !this.model.get(this.options.name)) {\n this.showAuthenticatorRequiredError();\n }\n },\n\n showAuthenticatorRequiredError() {\n const errorSummary = this.collection.length > 1\n ? loc('account.unlock.authenticatorRequired.multiple', 'login')\n : loc('account.unlock.authenticatorRequired.single', 'login');\n this.model.trigger('error', this.model, { responseJSON: { errorSummary } });\n },\n\n handleSelect(data) {\n //If schema contains a required identifier to fill first then validate the form\n const validationError = this.model.validateField('identifier');\n this.model.trigger('clearFormError');\n if(this.model.getPropertySchema('identifier')?.required && validationError) {\n this.model.trigger('invalid', this.model, validationError);\n } else {\n this.model.set(this.options.name, data);\n this.options.appState.trigger('saveForm', this.model); \n }\n },\n\n template: hbs`
            `,\n\n});\n","/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { View } from '@okta/courage';\nimport Enums from 'util/Enums';\nimport hbs from '@okta/handlebars-inline-precompile';\nimport { WIDGET_FOOTER_CLASS } from '../../utils/Constants';\n\nconst OktaSignInWidgetOnCaptchaLoadedCallback = 'OktaSignInWidgetOnCaptchaLoaded';\nconst OktaSignInWidgetOnCaptchaSolvedCallback = 'OktaSignInWidgetOnCaptchaSolved';\n\nconst HCAPTCHA_URL = \n `https://hcaptcha.com/1/api.js?onload=${OktaSignInWidgetOnCaptchaLoadedCallback}&render=explicit`;\nconst RECAPTCHAV2_URL = \n `https://www.google.com/recaptcha/api.js?onload=${OktaSignInWidgetOnCaptchaLoadedCallback}&render=explicit`;\n\nexport default View.extend({\n className: 'captcha-view',\n\n template: hbs`\n {{#if isCaptchaConfigured}}\\\n
            \n
            \n {{/if}}\\\n `,\n\n getTemplateData: function() {\n if (this.captchaConfig) {\n const className = this.captchaConfig.type === 'HCAPTCHA' ? 'h-captcha' : 'g-recaptcha';\n return { \n siteKey: this.captchaConfig.siteKey,\n isCaptchaConfigured: true,\n onCaptchaSolvedCallback: OktaSignInWidgetOnCaptchaSolvedCallback,\n className, \n };\n } else {\n return {};\n }\n },\n\n initialize() {\n if (this.options.appState.get('captcha')) {\n this.captchaConfig = this.options.appState.get('captcha');\n this._addCaptcha();\n }\n },\n\n remove: function(){\n View.prototype.remove.apply(this, arguments);\n\n // Cleanup global Captcha references\n if (this.captchaConfig.type === 'HCAPTCHA') {\n window.hcaptcha = undefined;\n } else if (this.captchaConfig.type === 'RECAPTCHA_V2') {\n window.grecaptcha = undefined;\n }\n },\n\n /**\n * Load the CAPTCHA lib dynamically (either HCAPTCHA or RECAPTCHAV2). Once loaded, trigger an event to inform\n * the parent form to actually render the CAPTCHA.\n * */ \n _addCaptcha() {\n // Callback invoked when CAPTCHA is solved.\n const onCaptchaSolved = (token) => {\n const captchaObject = this._getCaptchaOject();\n\n // We reset the Captcha. We need to reset because every time the \n // Captcha resolves back with a token and say we have a server side error, \n // if we submit the form again it won't work otherwise. The Captcha \n // has to be reset for it to work again in that scenario.\n const captchaId = this.$el.find('#captcha-container').attr('data-captcha-id');\n captchaObject.reset(captchaId);\n\n // Set the token in the model\n const fieldName = this.options.name;\n this.model.set(fieldName, token);\n\n this.options.appState.trigger('saveForm', this.model); \n };\n\n // Callback when CAPTCHA lib is loaded\n const onCaptchaLoaded = () => {\n // This is just a safeguard to ensure we don't bind Captcha to an already bound element.\n // It shouldn't happen in practice.\n if (this.$el.find('#captcha-container').attr('data-captcha-id')) {\n return;\n }\n\n const captchaObject = this._getCaptchaOject();\n\n // We set a temporary token for Captcha because this is a required field for the form and is normally set\n // at a later time. In order to prevent client-side validation errors because of this, we have to set a \n // dummy value. We then overwrite this with the proper token in the onCaptchaSolved callback.\n this.model.set(this.options.name, 'tempToken');\n\n const captchaId = captchaObject.render('captcha-container', {\n sitekey: this.captchaConfig.siteKey,\n callback: onCaptchaSolved\n });\n \n this.$el.find('#captcha-container').attr('data-captcha-id', captchaId);\n\n // Let the Baseform know that Captcha is loaded.\n this.options.appState.trigger('onCaptchaLoaded', captchaObject);\n\n // Render the HCAPTCHA footer - we need to do this manually since the HCAPTCHA lib doesn't do it\n if (this.captchaConfig.type === 'HCAPTCHA') {\n this._addHCaptchaFooter();\n } \n };\n\n // Attaching the callback to the window object so that the CAPTCHA script that we dynamically render\n // can have access to it since it won't have access to this view's scope.\n window[OktaSignInWidgetOnCaptchaLoadedCallback] = onCaptchaLoaded;\n\n // Attaching the Captcha solved callback to the window object because we reference it in our template under\n // the 'data-callback' attribute which the Captcha library uses to invoke the callback.\n window[OktaSignInWidgetOnCaptchaSolvedCallback] = onCaptchaSolved;\n\n \n if (this.captchaConfig.type === 'HCAPTCHA') {\n this._loadCaptchaLib(this._getCaptchaUrl(HCAPTCHA_URL));\n } else if (this.captchaConfig.type === 'RECAPTCHA_V2') {\n this._loadCaptchaLib(this._getCaptchaUrl(RECAPTCHAV2_URL));\n }\n },\n \n /**\n * We dynamically inject