{"version":3,"sources":["webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/LeftOutlined.js","webpack://ecoverso.org/./node_modules/@aws-amplify/api-rest/lib-esm/RestClient.js","webpack://ecoverso.org/./node_modules/@aws-amplify/api-rest/lib-esm/RestAPI.js","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/location.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/printError.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/GraphQLError.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/visitor.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/printer.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/inspect.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/invariant.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/source.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/defineToStringTag.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/syntaxError.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/blockStringValue.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/lexer.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/kinds.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/directiveLocation.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/parser.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/core/lib-esm/I18n/I18n.js","webpack://ecoverso.org/./node_modules/@aws-amplify/core/lib-esm/I18n/index.js","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/MqttOverWSProvider.js","webpack://ecoverso.org/./node_modules/@aws-amplify/core/lib-esm/index.js","webpack://ecoverso.org/./node_modules/@aws-amplify/core/lib-esm/constants.js","webpack://ecoverso.org/./node_modules/zen-observable-ts/lib/bundle.esm.js","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/PubSubProvider.js","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncProvider.js","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/node_modules/graphql/language/location.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/node_modules/graphql/error/printError.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/node_modules/graphql/error/GraphQLError.mjs","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncRealTimeProvider.js","webpack://ecoverso.org/./node_modules/@aws-amplify/auth/lib-esm/index.js","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/lib-esm/index.js","webpack://ecoverso.org/./node_modules/@aws-amplify/pubsub/lib-esm/PubSub.js","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/lib-esm/types/index.js","webpack://ecoverso.org/./node_modules/@aws-amplify/api-graphql/lib-esm/GraphQLAPI.js","webpack://ecoverso.org/./node_modules/@aws-amplify/api/lib-esm/API.js","webpack://ecoverso.org/./node_modules/antd/es/grid/hooks/useBreakpoint.js","webpack://ecoverso.org/./node_modules/mini-store/esm/Provider.js","webpack://ecoverso.org/./node_modules/mini-store/esm/connect.js","webpack://ecoverso.org/./node_modules/mini-store/esm/create.js","webpack://ecoverso.org/./node_modules/rc-util/es/createChainedFunction.js","webpack://ecoverso.org/./node_modules/rc-menu/es/utils/isMobile.js","webpack://ecoverso.org/./node_modules/rc-menu/es/util.js","webpack://ecoverso.org/./node_modules/rc-menu/es/placements.js","webpack://ecoverso.org/./node_modules/rc-menu/es/SubMenu.js","webpack://ecoverso.org/./node_modules/rc-menu/es/DOMWrap.js","webpack://ecoverso.org/./node_modules/rc-menu/es/SubPopupMenu.js","webpack://ecoverso.org/./node_modules/rc-menu/es/utils/legacyUtil.js","webpack://ecoverso.org/./node_modules/rc-menu/es/Menu.js","webpack://ecoverso.org/./node_modules/rc-menu/es/MenuItem.js","webpack://ecoverso.org/./node_modules/rc-menu/es/MenuItemGroup.js","webpack://ecoverso.org/./node_modules/rc-menu/es/Divider.js","webpack://ecoverso.org/./node_modules/rc-menu/es/index.js","webpack://ecoverso.org/./node_modules/antd/es/menu/MenuContext.js","webpack://ecoverso.org/./node_modules/antd/es/menu/SubMenu.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/BarsOutlined.js","webpack://ecoverso.org/./node_modules/antd/es/layout/layout.js","webpack://ecoverso.org/./node_modules/antd/es/layout/Sider.js","webpack://ecoverso.org/./node_modules/antd/es/_util/isNumeric.js","webpack://ecoverso.org/./node_modules/antd/es/menu/MenuItem.js","webpack://ecoverso.org/./node_modules/antd/es/menu/index.js","webpack://ecoverso.org/./node_modules/rc-table/es/sugar/ColumnGroup.js","webpack://ecoverso.org/./node_modules/rc-table/es/sugar/Column.js","webpack://ecoverso.org/./node_modules/rc-table/es/utils/valueUtil.js","webpack://ecoverso.org/./node_modules/rc-table/es/Cell/index.js","webpack://ecoverso.org/./node_modules/rc-table/es/context/TableContext.js","webpack://ecoverso.org/./node_modules/rc-table/es/utils/fixUtil.js","webpack://ecoverso.org/./node_modules/rc-table/es/Header/HeaderRow.js","webpack://ecoverso.org/./node_modules/rc-table/es/Header/Header.js","webpack://ecoverso.org/./node_modules/rc-table/es/utils/legacyUtil.js","webpack://ecoverso.org/./node_modules/rc-table/es/ColGroup.js","webpack://ecoverso.org/./node_modules/rc-table/es/Header/FixedHeader.js","webpack://ecoverso.org/./node_modules/rc-table/es/context/BodyContext.js","webpack://ecoverso.org/./node_modules/rc-table/es/Body/ExpandedRow.js","webpack://ecoverso.org/./node_modules/rc-table/es/Body/BodyRow.js","webpack://ecoverso.org/./node_modules/rc-table/es/context/ResizeContext.js","webpack://ecoverso.org/./node_modules/rc-table/es/Body/MeasureCell.js","webpack://ecoverso.org/./node_modules/rc-table/es/Body/index.js","webpack://ecoverso.org/./node_modules/rc-table/es/hooks/useColumns.js","webpack://ecoverso.org/./node_modules/rc-table/es/hooks/useFrame.js","webpack://ecoverso.org/./node_modules/rc-table/es/hooks/useStickyOffsets.js","webpack://ecoverso.org/./node_modules/rc-table/es/Panel/index.js","webpack://ecoverso.org/./node_modules/rc-table/es/Footer/index.js","webpack://ecoverso.org/./node_modules/rc-table/es/Footer/Cell.js","webpack://ecoverso.org/./node_modules/rc-table/es/Footer/Row.js","webpack://ecoverso.org/./node_modules/rc-table/es/utils/expandUtil.js","webpack://ecoverso.org/./node_modules/rc-util/es/Dom/css.js","webpack://ecoverso.org/./node_modules/rc-table/es/stickyScrollBar.js","webpack://ecoverso.org/./node_modules/rc-table/es/hooks/useSticky.js","webpack://ecoverso.org/./node_modules/rc-table/es/Table.js","webpack://ecoverso.org/./node_modules/rc-table/es/index.js","webpack://ecoverso.org/./node_modules/antd/es/spin/index.js","webpack://ecoverso.org/./node_modules/rc-pagination/es/Pager.js","webpack://ecoverso.org/./node_modules/rc-pagination/es/KeyCode.js","webpack://ecoverso.org/./node_modules/rc-pagination/es/Options.js","webpack://ecoverso.org/./node_modules/rc-pagination/es/Pagination.js","webpack://ecoverso.org/./node_modules/rc-pagination/es/locale/zh_CN.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","webpack://ecoverso.org/./node_modules/antd/es/pagination/MiniSelect.js","webpack://ecoverso.org/./node_modules/antd/es/pagination/Pagination.js","webpack://ecoverso.org/./node_modules/antd/es/pagination/index.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/usePagination.js","webpack://ecoverso.org/./node_modules/rc-tree/es/contextTypes.js","webpack://ecoverso.org/./node_modules/rc-tree/es/Indent.js","webpack://ecoverso.org/./node_modules/rc-tree/es/TreeNode.js","webpack://ecoverso.org/./node_modules/rc-tree/es/util.js","webpack://ecoverso.org/./node_modules/rc-tree/es/utils/treeUtil.js","webpack://ecoverso.org/./node_modules/rc-tree/es/utils/conductUtil.js","webpack://ecoverso.org/./node_modules/rc-dropdown/es/placements.js","webpack://ecoverso.org/./node_modules/rc-dropdown/es/Dropdown.js","webpack://ecoverso.org/./node_modules/rc-dropdown/es/index.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","webpack://ecoverso.org/./node_modules/antd/es/dropdown/dropdown-button.js","webpack://ecoverso.org/./node_modules/antd/es/dropdown/dropdown.js","webpack://ecoverso.org/./node_modules/antd/es/dropdown/index.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useSelection.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/CaretDownOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/CaretUpOutlined.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/CaretUpOutlined.js","webpack://ecoverso.org/./node_modules/antd/es/table/util.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useSorter.js","webpack://ecoverso.org/./node_modules/@ant-design/icons-svg/es/asn/FilterFilled.js","webpack://ecoverso.org/./node_modules/@ant-design/icons/es/icons/FilterFilled.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useFilter/FilterWrapper.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useFilter/FilterDropdown.js","webpack://ecoverso.org/./node_modules/antd/es/_util/hooks/useSyncState.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useFilter/index.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useTitleColumns.js","webpack://ecoverso.org/./node_modules/antd/es/table/ExpandIcon.js","webpack://ecoverso.org/./node_modules/antd/es/locale/en_US.js","webpack://ecoverso.org/./node_modules/antd/es/table/Column.js","webpack://ecoverso.org/./node_modules/antd/es/table/ColumnGroup.js","webpack://ecoverso.org/./node_modules/antd/es/table/Table.js","webpack://ecoverso.org/./node_modules/antd/es/table/hooks/useLazyKVMap.js","webpack://ecoverso.org/./node_modules/antd/es/table/index.js","webpack://ecoverso.org/./node_modules/antd/es/tag/CheckableTag.js","webpack://ecoverso.org/./node_modules/antd/es/tag/index.js","webpack://ecoverso.org/./node_modules/paho-mqtt/paho-mqtt.js","webpack://ecoverso.org/./node_modules/rc-util/es/getScrollBarSize.js","webpack://ecoverso.org/./node_modules/rc-util/es/setStyle.js","webpack://ecoverso.org/./node_modules/rc-util/es/switchScrollingEffect.js","webpack://ecoverso.org/./node_modules/rc-util/es/Dom/scrollLocker.js","webpack://ecoverso.org/./node_modules/rc-util/es/PortalWrapper.js","webpack://ecoverso.org/./node_modules/rc-drawer/es/utils.js","webpack://ecoverso.org/./node_modules/rc-drawer/es/DrawerChild.js","webpack://ecoverso.org/./node_modules/rc-drawer/es/DrawerWrapper.js","webpack://ecoverso.org/./node_modules/rc-drawer/es/index.js","webpack://ecoverso.org/./node_modules/antd/es/drawer/index.js","webpack://ecoverso.org/./src/User/Profile/Components/DownloadFile.tsx","webpack://ecoverso.org/./src/User/Profile/Components/UserInGroupDetails.tsx","webpack://ecoverso.org/./src/User/Profile/Components/ManageGroup.tsx","webpack://ecoverso.org/./node_modules/lodash/_apply.js","webpack://ecoverso.org/./node_modules/lodash/_baseFlatten.js","webpack://ecoverso.org/./node_modules/lodash/_baseSetToString.js","webpack://ecoverso.org/./node_modules/lodash/_baseTrim.js","webpack://ecoverso.org/./node_modules/lodash/_baseUnset.js","webpack://ecoverso.org/./node_modules/lodash/_customOmitClone.js","webpack://ecoverso.org/./node_modules/lodash/_flatRest.js","webpack://ecoverso.org/./node_modules/lodash/_isFlattenable.js","webpack://ecoverso.org/./node_modules/lodash/_overRest.js","webpack://ecoverso.org/./node_modules/lodash/_parent.js","webpack://ecoverso.org/./node_modules/lodash/_setToString.js","webpack://ecoverso.org/./node_modules/lodash/_shortOut.js","webpack://ecoverso.org/./node_modules/lodash/_trimmedEndIndex.js","webpack://ecoverso.org/./node_modules/lodash/constant.js","webpack://ecoverso.org/./node_modules/lodash/debounce.js","webpack://ecoverso.org/./node_modules/lodash/flatten.js","webpack://ecoverso.org/./node_modules/lodash/isPlainObject.js","webpack://ecoverso.org/./node_modules/lodash/last.js","webpack://ecoverso.org/./node_modules/lodash/now.js","webpack://ecoverso.org/./node_modules/lodash/omit.js","webpack://ecoverso.org/./node_modules/lodash/toNumber.js"],"names":["props","ref","AntdIcon","Object","assign","icon","displayName","__assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","logger","RestClient","options","_region","_service","_custom_header","undefined","_cancelTokenMap","Credentials","_options","debug","WeakMap","ajax","urlOrApiInfo","method","init","parsed_url","url","region","service","custom_header","params","libraryHeaders","userAgent","initParams","isAllResponse","custom_header_obj","_a","_b","parsedUrl","_this","_c","_parseUrl","endpoint","host","path","headers","data","responseType","timeout","cancelToken","Platform","response","FormData","JSON","stringify","withCredentials","cancellableToken","token","signerServiceInfo","parse","search","format","query","queryStringParameters","keys","reduce","acc","k","_request","get","credentials","_signed","catch","error","DateUtils","dateHeader","date","Date","responseDate","requestDate","getTime","err","put","patch","post","del","head","cancel","request","message","source","isCancel","getCancellableToken","updateRequestToBeCancellable","promise","cancelTokenSource","set","apiName","cloud_logic_array","endpoints","Array","isArray","forEach","name","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","creds","secret_key","secretAccessKey","access_key","accessKeyId","session_token","sessionToken","endpointInfo","signed_params","Signer","parts","split","slice","join","RestAPIClass","_api","getModuleName","configure","API","otherOptions","opt","custom","header","warn","createInstance","apiInfo","getEndpointInfo","responsePromise","Error","apiConfig","find","api","RestAPI","getLocation","position","match","lineRegexp","line","column","exec","index","highlightSourceAtLocation","location","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","lines","concat","existingLines","filter","_ref","padLen","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","prefix","Math","max","return","map","_ref3","str","printPrefixedLines","len","GraphQLError","nodes","positions","originalError","extensions","_nodes","_source","node","loc","_locations","_positions","list","start","pos","_extensions","defineProperties","enumerable","writable","locations","Boolean","stack","defineProperty","configurable","captureStackTrace","create","constructor","toString","printedLocations","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","printError","QueryDocumentKeys","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","isNode","maybeNode","kind","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","print","ast","root","visitorKeys","inArray","edits","key","parent","ancestors","newRoot","isEdited","clone","editOffset","ii","editKey","editValue","splice","prev","visitFn","visit","printDocASTReducer","definitions","operation","varDefs","wrap","variableDefinitions","directives","selectionSet","variable","type","defaultValue","_ref2","block","selections","alias","args","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","isDescription","escaped","replace","indent","printBlockString","_ref11","_ref12","_ref13","values","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","operationTypes","_ref21","addDescription","_ref22","_ref23","interfaces","_ref24","every","arg","_ref25","_ref26","_ref27","types","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","description","maybeArray","separator","x","array","maybeString","end","_typeof","obj","inspect","String","invariant","condition","_defineProperty","classObject","syntaxError","blockStringValue","rawString","commonIndent","leadingWhitespace","_i","isBlank","shift","advanceLexer","lastToken","lookahead","EOF","readToken","COMMENT","toStringTag","freeze","SOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","getTokenDesc","charCodeAt","Tok","printCharCode","code","isNaN","fromCharCode","toUpperCase","lexer","bodyLength","startPosition","lineStart","positionAfterWhitespace","col","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","rawValue","readBlockString","charCode","uniCharCode","readString","unexpectedCharacterMessage","a","b","c","d","char2hex","toJSON","Kind","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","sourceObj","many","parseDefinition","parseDocument","startOfFileToken","advance","parseName","expect","peek","parseExecutableDefinition","parseTypeSystemDefinition","keywordToken","expectKeyword","parseDirectives","parseOperationTypeDefinition","unexpected","parseSchemaExtension","parseScalarTypeExtension","parseImplementsInterfaces","parseFieldsDefinition","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionMemberTypes","parseUnionTypeExtension","parseEnumValuesDefinition","parseEnumTypeExtension","parseInputFieldsDefinition","parseInputObjectTypeExtension","parseTypeSystemExtension","peekDescription","parseOperationDefinition","experimentalFragmentVariables","parseFragmentName","parseVariableDefinitions","parseNamedType","parseSelectionSet","parseFragmentDefinition","parseOperationType","operationToken","parseVariableDefinition","experimentalVariableDefinitionDirectives","parseVariable","parseTypeReference","skip","parseValueLiteral","parseSelection","parseFragment","nameOrAlias","parseArguments","parseField","isConst","item","parseConstArgument","parseArgument","parseConstValue","parseValueValue","any","parseList","parseObjectField","parseObject","parseStringLiteral","parseDirective","parseSchemaDefinition","parseDescription","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseArgumentDefs","parseDirectiveLocation","parseDirectiveLocations","parseDirectiveDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseInputValueDef","parseEnumValueDefinition","startToken","noLocation","Loc","endToken","atToken","openKind","parseFn","closeKind","I18n","_lang","_dict","language","window","navigator","setLanguage","lang","defVal","val","getByLanguage","lang_dict","putVocabulariesForLanguage","vocabularies","putVocabularies","_config","_i18n","config","checkConfig","_extendStatics","Constants","hasSymbol","for","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","AbstractPubSubProvider","getProviderName","getCategory","__extends","setPrototypeOf","__proto__","__","ClientsQueue","promises","Map","clientId","clientFactory","from","remove","delete","topicSymbol","MqttOverWSProvider","_super","uuid","_clientsQueue","_topicObservers","_clientIdObservers","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","errorCode","topicsToDelete_1","clientIdObservers","observer","observerForTopic","observerTopic","size","topic","newClient","client","onMessageArrived","destinationName","msg","payloadString","_onMessage","onConnectionLost","connect","useSSL","isSSLEnabled","mqttVersion","onSuccess","onFailure","clientsQueue","disconnect","isConnected","publish","topics","targetTopics","send","matchedTopicObservers_1","filterArray","topicArray","left","right","mqttTopicMatch","parsedMessage_1","observersForTopic","subscribe","Set","add","observersForClientId","e_1","unsubscribe","__read","o","m","r","ar","__spread","AWSAppSyncProvider","_topicClient","_topicAlias","_cleanUp","entries","_cleanUpForTopic","has","obs","closed","mqttConnections","newSubscriptions","newAliases","elem","connectionInfoForTopic","all","err_1","_d","complete","some","origKey","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","Auth","AMPLIFY_SYMBOL","NON_RETRYABLE_CODES","CONTROL_MSG","AWS_APPSYNC_REALTIME_HEADERS","accept","DEFAULT_KEEP_ALIVE_TIMEOUT","AWSAppSyncRealTimeProvider","socketStatus","CLOSED","keepAliveTimeout","subscriptionObserverMap","promiseArray","_topics","_msg","appSyncGraphqlEndpoint","subscriptionId_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","errors","REALTIME_SUBSCRIPTION_INIT_ERROR","subscriptionState","_waitForSubscriptionToBeConnected","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","authenticationType","variables","apiKey","graphql_headers","additionalHeaders","dataString","headerObj","_e","subscriptionMessage","stringToAWSRealTime","err_2","_f","subscriptionFailedCallback_1","_g","subscriptionFailedCallback","subscriptionReadyCallback","_h","_j","PENDING","startAckTimeoutId","_awsRealTimeHeaderBasedAuth","payload","canonicalUri","id","authorization","GQL_START","_initializeWebSocketConnection","CONNECTION_FAILED","setTimeout","_timeoutStartSubscriptionAck","awsRealTimeSocket","res","rej","readyState","WebSocket","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bind","bufferedAmount","clearTimeout","keepAliveTimeoutId","tempSocket","onclose","onerror","close","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","event","Hub","dispatchApiEvent","SUBSCRIPTION_ACK","clear","protocol","discoverableEndpoint","headerString","headerQs","payloadQs","awsRealTimeUrl","err_3","CONNECTING","_initializeRetryableHandshake","_initializeHandshake","err_4","errorType","newSocket","onopen","ackOk","reason","onmessage","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","gqlInit","GQL_CONNECTION_INIT","includes","headerHandler","handler","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","AWS_LAMBDA","_customAuthHeader","Authorization","getAccessToken","getJwtToken","federatedInfo","currentUser","dt","dtStr","toISOString","_ensureCredentials","cred","PubSub","PubSubClass","_pluggables","_awsAppSyncProvider","_awsAppSyncRealTimeProvider","pluggable","addPluggable","removePluggable","providerName","getProviderByName","awsAppSyncProvider","awsAppSyncRealTimeProvider","getProviders","provider","ssr","providers","subscriptions","observable","console","_error","subscription","GRAPHQL_AUTH_MODE","GraphQLAuthError","GraphQLAPIClass","Cache","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","session","aws_appsync_apiKey","NO_API_KEY","NO_CREDENTIALS","NO_FEDERATED_JWT","NO_CURRENT_USER","currentSession","NO_AUTH_TOKEN","getGraphqlOperationType","doc","graphql","paramQuery","authMode","authToken","def","operationType","_graphql","_graphqlSubscribe","customGraphqlEndpoint","customEndpointRegion","_k","_l","aws_appsync_region","aws_appsync_graphqlEndpoint","graphql_endpoint","graphql_endpoint_iam_region","shear","GraphQLAPI","APIClass","_restApi","_graphqlApi","restAPIConfig","graphQLAPIConfig","_useState","useState","_useState2","screens","setScreens","useEffect","supportScreens","MiniStoreContext","Provider","render","store","children","defaultMapStateToProps","mapStateToProps","shouldSubscribe","finalMapStateToProps","WrappedComponent","Connect","context","handleChange","nextState","getState","setState","subscribed","state","getDerivedStateFromProps","prevState","componentDidMount","trySubscribe","componentWillUnmount","tryUnsubscribe","shouldComponentUpdate","nextProps","miniStoreForwardedRef","getDisplayName","contextType","forwardRef","forwarded","createChainedFunction","applePhone","appleIpod","appleTablet","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackberry","otherBlackberry10","otherOpera","otherChrome","otherFirefox","regex","test","isMobile","ua","tmp","_tmp","_tmp3","apple","phone","ipod","tablet","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","noop","getKeyFromChildrenIndex","child","menuEventKey","getMenuIdFromSubMenuEventKey","eventKey","loopMenuItem","isMenuItemGroup","c2","loopMenuItemRecursively","ret","construct","isSubMenu","isMenuItem","menuAllProps","getWidth","includeMargin","width","getBoundingClientRect","_getComputedStyle","getComputedStyle","marginLeft","marginRight","toFixed","setStyle","styleProperty","style","autoAdjustOverflow","adjustX","adjustY","placements","topLeft","points","overflow","offset","bottomLeft","leftTop","rightTop","placementsRtl","guid","popupPlacementMap","horizontal","vertical","updateDefaultActiveFirst","defaultActiveFirst","menuId","SubMenu","_React$Component","onDestroy","onKeyDown","keyCode","menu","menuInstance","visible","getVisible","KeyCode","onTitleClick","triggerOpenChange","handled","onOpenChange","onPopupVisibleChange","onMouseEnter","_this$props","domEvent","onMouseLeave","_this$props2","parentMenu","subMenuInstance","onTitleMouseEnter","_this$props3","onItemHover","hover","onTitleMouseLeave","_this$props4","triggerSubMenuAction","onSubMenuClick","info","onClick","addKeyPath","onSelect","onDeselect","getPrefixCls","rootPrefixCls","getActiveClassName","getDisabledClassName","getSelectedClassName","getOpenClassName","isOpen","getMode","mode","saveMenuInstance","keyPath","open","openChange","trigger","mouseenterTimeout","isChildrenSelected","selectedKeys","isInlineMode","adjustWidth","subMenuTitle","popupMenu","offsetWidth","minWidth","saveSubMenuTitle","getBaseProps","mergedMode","level","inlineIndent","focusable","openKeys","motion","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","builtinPlacements","multiple","prefixCls","internalMenuId","manualRef","itemIcon","expandIcon","direction","getMotion","haveRendered","_this$props5","leavedClassName","removeOnLeave","motionAppear","isRootMenu","componentDidUpdate","_this2","_this$props6","updateState","isOpenChanged","isModeChanged","raf","updateStateRaf","minWidthTimeout","_this$props7","className","baseProps","_this3","mergedMotion","haveOpened","sharedClassName","mergedClassName","renderPopupMenu","_classNames2","_props$parentMenu","_classNames3","inline","active","disabled","mouseEvents","titleClickEvents","titleMouseEvents","isRTL","paddingRight","paddingLeft","ariaOwns","title","role","renderChildren","getPopupContainer","triggerNode","parentNode","popupPlacement","popupAlign","popupOffset","popupClassName","placement","popupVisible","popup","action","mouseEnterDelay","mouseLeaveDelay","forceRender","popupMotion","defaultProps","connected","activeKey","subMenuKey","MENUITEM_OVERFLOWED_CLASSNAME","DOMWrap","resizeObserver","mutationObserver","originalTotalWidth","overflowedItems","menuItemSizes","cancelFrameId","lastVisibleIndex","childRef","getMenuItemNodes","ul","current","getOverflowedSubMenuItem","keyPrefix","renderPlaceholder","overflowedIndicator","theme","_copy$props","propStyle","rest","display","visibility","setChildrenWidthAndResize","ulChildrenNodes","lastOverflowedIndicatorPlaceholder","menuItemNodes","overflowedIndicatorWidth","cur","handleResize","currentSumWidth","liWidth","menuUl","cancelAnimationFrame","requestAnimationFrame","el","observe","MutationObserver","attributes","childList","subTree","childNode","overflowed","tag","Tag","updateActiveKey","getEventKey","getActiveKey","originalActiveKey","found","saveRef","instanceArray","SubPopupMenu","callback","getFlatInstanceArray","activeItem","preventDefault","selectInfo","reverse","activeIndex","ci","arr","renderCommonMenuItem","extraProps","childProps","isActive","newChildProps","renderMenuItem","prevProps","domProps","tabIndex","toArray","menuMode","_ref$defaultMotions","defaultMotions","openAnimation","openTransitionName","switchingModeFromInline","warning","motionName","defaultMotion","Menu","selectable","_selectedKeys","selectedKey","getRealMenuMode","_assertThisInitialize2","innerMenu","getWrappedInstance","changed","processSingle","oneChanged","_selectedKeys2","restoreModeVerticalFromInline","onTransitionEnd","widthCollapsed","propertyName","target","currentTarget","classNameValue","animVal","iconScaled","setInnerMenu","initialState","listeners","defaultSelectedKeys","defaultOpenKeys","partial","listener","inlineOpenKeys","updateMiniStore","updateMenuDisplay","siderCollapsed","inlineCollapsed","collapsedWidth","prevOpenKeys","getInlineCollapsed","omit","prevStoreState","newStoreState","newState","MenuItem","isSelected","saveNode","callRef","_classNames","attrs","attribute","mouseEvent","MenuItemGroup","renderInnerMenuItem","_props$className","titleClassName","listClassName","stopPropagation","Divider","createContext","charAt","titleIsSpan","antdMenuTheme","renderTitle","LayoutContext","siderHook","addSider","removeSider","suffixCls","tagName","BasicComponent","Adapter","customizePrefixCls","Basic","others","classString","_React$useState","_React$useState2","siders","setSiders","hasSider","currentId","parseFloat","isFinite","dimensionMaxMap","xs","sm","md","lg","xl","xxl","SiderContext","generateId","Sider","_a$defaultCollapsed","defaultCollapsed","_a$theme","_a$style","_a$collapsible","collapsible","_a$reverseArrow","reverseArrow","_a$width","_a$collapsedWidth","zeroWidthTriggerStyle","breakpoint","onCollapse","onBreakpoint","useContext","collapsed","setCollapsed","_useState3","_useState4","below","setBelow","handleSetCollapsed","responsiveHandlerRef","useRef","mql","matches","responsiveHandler","matchMedia","addEventListener","addListener","removeEventListener","removeListener","uniqueId","divProps","rawWidth","siderWidth","zeroWidthTrigger","defaultTrigger","triggerDom","divStyle","siderCls","toggle","expanded","RightOutlined","LeftOutlined","flex","maxWidth","renderItem","danger","tooltipTitle","tooltipProps","childrenLength","overlayClassName","renderItemChildren","Consumer","InternalMenu","renderMenu","menuClassName","devWarning","C","_React$Component2","_super2","Item","ItemGroup","getPathValue","record","pathList","getColumnsKey","columns","columnKeys","dataIndex","mergedKey","validateValue","Cell","cellProps","_ref$component","component","Component","colSpan","rowSpan","fixLeft","fixRight","firstFixLeft","lastFixLeft","firstFixRight","lastFixRight","appendNode","_ref$additionalProps","additionalProps","ellipsis","align","rowType","isSticky","cellPrefixCls","renderData","cellColSpan","cellRowSpan","cellStyle","cellClassName","restCellProps","mergedColSpan","mergedRowSpan","fixedStyle","isFixLeft","isFixRight","alignStyle","textAlign","ellipsisConfig","showTitle","componentProps","RefCell","shouldCellUpdate","getCellFixedInfo","colStart","colEnd","stickyOffsets","startColumn","endColumn","fixed","nextColumn","prevColumn","HeaderRow","rowProps","cells","flattenColumns","RowComponent","rowComponent","CellComponent","cellComponent","onHeaderRow","_React$useContext","cell","columnsKey","cellIndex","fixedInfo","onHeaderCell","getComponent","rows","rootColumns","fillRowCells","colIndex","rowIndex","currentColIndex","subColumns","total","count","hasSubColumns","rowCount","_loop","parseHeaderRows","WrapperComponent","trComponent","thComponent","row","INTERNAL_COL_DEFINE","colWidths","cols","mustInsert","columCount","unshift","FixedHeader","noData","fixHeader","offsetHeader","stickyClassName","onScroll","maxContentScroll","scrollbarSize","combinationScrollBarSize","scrollRef","setScrollRef","element","_scrollRef$current","onWheel","deltaX","scrollLeft","_scrollRef$current2","allFlattenColumnsWithWidth","lastColumn","ScrollBarColumn","columnsWithScrollbar","useMemo","flattenColumnsWithScrollbar","headerStickyOffsets","mergedColumnWidth","cloneColumns","useColumnWidth","top","tableLayout","fixColumn","horizonScroll","componentWidth","contentNode","BodyRow","rowKey","getRowKey","rowExpandable","expandedKeys","onRow","_props$indent","childrenColumnName","fixedInfoList","_React$useContext2","expandableType","expandRowByClick","onTriggerExpand","rowClassName","expandedRowClassName","indentSize","expandedRowRender","expandIconColumnIndex","expandRended","setExpandRended","recordKey","rowSupportExpand","nestExpandable","hasNestChildren","mergedExpandable","computeRowClassName","expandRowNode","nestRowNode","baseRowNode","_additionalProps","_len","_key","appendCellNode","additionalCellProps","columnClassName","expandable","onExpand","onCell","expandContent","computedExpandedRowClassName","subRecord","subIndex","subKey","MeasureCell","columnKey","onColumnResize","cellRef","onResize","padding","border","height","Body","measureColumnWidth","emptyNode","_React$useContext3","tdComponent","fontSize","MemoBody","convertChildrenToColumns","nodeChildren","restProps","flatColumns","parsedFixed","subColum","transformColumns","columnWidth","baseColumns","withExpandColumns","_expandColumn","expandColIndex","expandColumn","recordExpandable","mergedColumns","finalColumns","revertForRtl","useLayoutState","defaultState","stateRef","forceUpdate","lastPromiseRef","updateBatchRef","updater","prevBatch","batchUpdater","columnCount","leftOffsets","rightOffsets","_end","FooterComponents","Row","renderExpandIcon","expandClassName","getOffset","box","docElem","document","documentElement","pageXOffset","clientLeft","pageYOffset","scrollTop","clientTop","StickyScrollBar","_scrollBodyRef$curren","_scrollBodyRef$curren2","scrollBodyRef","offsetScroll","container","bodyScrollWidth","scrollWidth","bodyWidth","clientWidth","scrollBarWidth","scrollBarRef","_useLayoutState","isHiddenScrollBar","_useLayoutState2","scrollState","setScrollState","refState","delta","setActive","onMouseUp","onMouseMove","_window","buttons","pageX","onContainerScroll","tableOffsetTop","tableBottomOffset","offsetHeight","currentClientOffset","innerHeight","clientHeight","getScrollBarSize","setScrollLeft","onMouseUpListener","onMouseMoveListener","onScrollListener","onResizeListener","bodyNode","bottom","onMouseDown","persist","transform","defaultContainer","EMPTY_DATA","EMPTY_SCROLL_TARGET","INTERNAL_HOOKS","MemoTableContent","pingLeft","pingRight","Table","scroll","footer","summary","showHeader","components","emptyText","internalHooks","internalRefs","sticky","mergedData","hasData","setScrollbarSize","scrollXStyle","scrollYStyle","scrollTableStyle","mergedComponents","merged","fillProps","objects","mergeObject","defaultComponent","expandableConfig","legacyExpandableConfig","getExpandableProps","expandedRowKeys","defaultExpandedRowKeys","defaultExpandAllRows","onExpandedRowsChange","mergedExpandIcon","mergedChildrenColumnName","__PARENT_RENDER_ICON__","_React$useState3","dig","findAllChildrenKeys","_React$useState4","innerExpandedKeys","setInnerExpandedKeys","mergedExpandedKeys","newExpandedKeys","hasKey","_React$useState5","_React$useState6","setComponentWidth","_useColumns","_useColumns2","columnContext","fullTableRef","scrollHeaderRef","_React$useState7","_React$useState8","pingedLeft","setPingedLeft","_React$useState9","_React$useState10","pingedRight","setPingedRight","colsWidths","updateColsWidths","pureColWidths","stickyRef","_useSticky","_ref$offsetHeader","_ref$offsetScroll","_ref$getContainer","getContainer","useSticky","overflowY","maxHeight","overflowX","isVisible","widths","newWidths","_useTimeoutLock","frameRef","timeoutRef","cleanUp","useTimeoutLock","_useTimeoutLock2","setScrollTarget","getScrollTarget","forceScroll","_stickyRef$current","mergedScrollLeft","compareTarget","triggerOnScroll","groupTableNode","bodyContent","TableComponent","mergedTableLayout","headerProps","bodyTable","bodyColGroup","footerTable","customizeScrollBody","colWidth","Number","ariaProps","memo","substr","getDataAndAriaProps","fullTable","TableContextValue","BodyContextValue","ResizeContextValue","Column","ColumnGroup","Summary","defaultIndicator","Spin","debouncifyUpdateSpinning","delay","cancelExistingSpin","updateSpinning","originalUpdateSpinning","spinning","renderSpin","tip","wrapperClassName","spinClassName","spinElement","indicator","dotClassName","renderIndicator","isNestedPattern","containerClassName","shouldBeDelayed","shouldDelay","cls","page","onKeyPress","itemRender","rel","Options","goInputText","buildOptionText","locale","items_per_page","changeSize","handleBlur","goButton","quickGo","relatedTarget","getValidValue","go","pageSize","pageSizeOptions","option","sort","selectComponentClass","selectPrefixCls","Select","changeSelect","goInput","gotoButton","getPageSizeOptions","Option","showSearch","optionLabelProp","dropdownMatchSelectWidth","onChange","onKeyUp","jump_to_confirm","jump_to","onBlur","calculatePage","floor","Pagination","getJumpPrevPage","showLessItems","getJumpNextPage","min","getItemIcon","iconNode","savePaginationNode","paginationNode","isValid","shouldDisplayQuickJumper","showQuickJumper","handleKeyDown","handleKeyUp","currentInputValue","changePageSize","newCurrent","onShowSizeChange","currentPage","hasPrev","hasNext","jumpPrev","jumpNext","runIfEnter","restParams","runIfEnterPrev","runIfEnterNext","runIfEnterJumpPrev","runIfEnterJumpNext","handleGoTO","hasOnChange","_current","defaultCurrent","_pageSize","defaultPageSize","lastCurrentNode","querySelector","activeElement","blur","inputValue","allPages","showSizeChanger","totalBoundaryShowSizeChanger","prevPage","prevIcon","prevButton","isValidElement","cloneElement","nextPage","nextIcon","nextButton","hideOnSinglePage","showTotal","simple","showPrevNextJumpers","jumpPrevIcon","jumpNextIcon","_this$state","pagerList","firstPager","lastPager","pageBufferSize","dataOrAriaAttributeProps","prev_page","renderPrev","next_page","renderNext","pagerProps","prevItemTitle","prev_3","prev_5","nextItemTitle","next_3","next_5","last","_active","totalText","prevDisabled","nextDisabled","unselectable","getShowSizeChanger","MiniSelect","customizeSelectPrefixCls","customLocale","useBreakpoint","renderPagination","contextLocale","isSmall","responsive","extendedClassName","mini","getIconsProps","LocaleReceiver","componentName","defaultLocale","usePagination","pagination","_a$total","paginationTotal","paginationObj","innerPagination","setInnerPagination","mergedPagination","extendsObject","maxPage","ceil","refreshPagination","TreeContext","isStart","isEnd","baseClassName","ICON_OPEN","ICON_CLOSE","InternalTreeNode","dragNodeHighlight","onSelectorClick","onNodeClick","convertNodePropsToEventData","isSelectable","onCheck","onSelectorDoubleClick","onNodeDoubleClick","isDisabled","onNodeSelect","disableCheckbox","checked","onNodeCheck","isCheckable","targetChecked","onNodeMouseEnter","onNodeMouseLeave","onContextMenu","onNodeContextMenu","onDragStart","onNodeDragStart","dataTransfer","setData","onDragEnter","onNodeDragEnter","onDragOver","onNodeDragOver","onDragLeave","onNodeDragLeave","onDragEnd","onNodeDragEnd","onDrop","onNodeDrop","loading","onNodeExpand","setSelectHandle","selectHandle","getNodeState","isLeaf","hasChildren","keyEntities","loaded","loadData","checkable","treeCheckable","syncLoadData","_this$props$context","onNodeLoad","renderSwitcherIconDom","switcherIconFromProps","switcherIcon","switcherIconFromCtx","renderSwitcher","_switcherIconDom","switcherCls","switcherIconDom","renderCheckbox","halfChecked","$custom","renderIcon","renderSelector","$icon","titleNode","selected","_this$props$context2","showIcon","treeIcon","draggable","titleRender","mergedDraggable","wrapClass","currentIcon","$title","onDoubleClick","renderDropIndicator","_this$props$context3","dropLevelOffset","dropPosition","dropIndicatorRender","dragOverNodeKey","treeSelectable","omitProps","dragOver","dragOverGapTop","dragOverGapBottom","domRef","otherProps","_this$props$context4","filterTreeNode","dropContainerKey","dropTargetKey","startsWith","isEndNode","ContextTreeNode","isTreeNode","getKey","traverseDataNodes","dataNodes","childrenPropName","syntheticGetKey","externalGetKey","configType","processNode","parentPos","subNode","eventData","removeFromCheckedKeys","halfCheckedKeys","checkedKeys","filteredKeys","isCheckDisabled","conductCheck","keyList","getCheckDisabled","syntheticGetCheckDisabled","warningMissKeys","hasEntity","levelEntities","maxLevel","entity","levelSet","_entity$children","childEntity","visitedKeys","_level","allChecked","partialChecked","fillConductCheck","halfKeys","_entity$children2","_level2","cleanConductCheck","targetOffset","topCenter","topRight","bottomCenter","bottomRight","_props$arrow","arrow","_props$prefixCls","transitionName","animation","_props$placement","_props$placements","showAction","hideAction","overlayStyle","_props$trigger","triggerVisible","setTriggerVisible","mergedVisible","triggerRef","openClassName","childrenProps","childClassName","minOverlayWidthMatchTrigger","alignPoint","getOverlayElement","overlay","onOverlayClick","overlayProps","getMenuElement","overlayElement","extraOverlayProps","triggerHideAction","popupStyle","popupTransitionName","popupAnimation","stretch","onVisibleChange","ButtonGroup","DropdownButton","getContextPopupContainer","htmlType","href","_props$icon","buttonsRender","dropdownProps","_buttonsRender","_buttonsRender2","leftButtonToRender","rightButtonToRender","__ANT_BUTTON","dropdownTrigger","overlayClassNameCustomized","triggerActions","overlayNode","_overlayProps$selecta","_overlayProps$focusab","overlayNodeExpandIcon","renderOverlay","getPlacement","Button","SELECTION_ALL","SELECTION_INVERT","SELECTION_NONE","getFixedType","flattenData","useSelection","rowSelection","preserveSelectedRowKeys","selectedRowKeys","defaultSelectedRowKeys","getCheckboxProps","onSelectionChange","onSelectAll","onSelectInvert","onSelectNone","onSelectMultiple","selectionColWidth","selectionType","customizeRenderCell","renderCell","hideSelectAll","_ref$checkStrictly","checkStrictly","pageData","getRecordByKey","expandType","tableLocale","preserveRecordsRef","_useMergedState","useMergedState","_useMergedState2","mergedSelectedKeys","setMergedSelectedKeys","initWrapper","processEntity","onProcessFinished","legacyExternalGetKey","mergedExternalGetKey","posEntities","wrapper","convertDataToEntities","flattedData","checkboxPropsMap","checkboxProps","isCheckboxDisabled","useCallback","_useMemo2","_conductCheck","_useMemo3","derivedSelectedKeys","derivedHalfSelectedKeys","derivedSelectedKeySet","derivedHalfSelectedKeySet","lastSelectedKey","setLastSelectedKey","setSelectedKeys","availableKeys","records","newCache","triggerSingleSelection","mergedSelections","selection","text","selectionAll","selectInvert","keySet","selectNone","recordKeys","checkedCurrentAll","checkedCurrentSome","customizeSelections","onSelectionClick","DownOutlined","allDisabled","indeterminate","changeKeys","skipGroup","nativeEvent","mergedIndeterminate","shiftKey","startIndex","endIndex","pointKeys","recordIndex","rangeKeys","changedKeys","originCheckedKeys","arrDel","_checkedKeys","nextCheckedKeys","tempKeySet","selectionColumn","columnTitle","_renderCell","_columns","restColumns","selectionFixed","getColumnKey","defaultKey","getColumnPos","renderColumnTitle","ASCEND","DESCEND","getMultiplePriority","sorter","getSortFunction","compare","collectSortStates","sortStates","pushState","columnPos","multiplePriority","sortOrder","defaultSortOrder","injectSorter","sorterSates","triggerSorter","defaultSortDirections","tableShowSorterTooltip","newColumn","sortDirections","showSorterTooltip","sorterState","sorterOrder","nextSortOrder","nextSortDirection","upNode","downNode","cancelSort","triggerAsc","triggerDesc","sortTip","renderProps","renderSortTitle","originOnClick","stateToInfo","sorterStates","order","field","generateSorterInfo","getSortData","innerSorterStates","cloneData","runningSorters","record1","record2","compareFn","compareResult","subRecords","useFilterSorter","onSorterChange","setSortStates","mergedSorterStates","validate","collectedStates","validateStates","patchStates","multipleMode","columnTitleSorterProps","sortColumns","sortColumn","sortState","newSorterStates","innerColumns","renderFilterItems","filters","filterMultiple","margin","image","filterEmptyText","imageStyle","initialValue","dropdownPrefixCls","filterState","triggerFilter","filterDropdownVisible","onFilterDropdownVisibleChange","setVisible","filtered","forceFiltered","newVisible","propFilteredKeys","_useSyncState","useForceUpdate","newValue","_useSyncState2","getFilteredKeysSync","setFilteredKeysSync","onSelectKeys","setOpenKeys","openRef","dropdownContent","internalTriggerFilter","mergedKeys","onConfirm","onReset","dropdownMenuClass","filterDropdown","confirm","closeDropdown","clearFilters","filterReset","filterConfirm","filterIcon","collectFilterStates","filterStates","filteredValues","filteredValue","defaultFilteredValue","injectFilter","_column$filterMultipl","flattenKeys","generateFilterInfo","currentFilters","originKey","getFilterData","currentData","_filterState$column","onFilter","keyIndex","findIndex","realKey","onFilterChange","setFilterStates","mergedFilterStates","getFilters","newFilterStates","fillTitle","columnTitleProps","cloneColumn","useTitleColumns","iconPrefix","collapse","expand","EMPTY_LIST","customizeSize","bordered","customizeDropdownPrefixCls","dataSource","legacyChildrenColumnName","_props$showSorterTool","matched","tableProps","SizeContext","_React$useContext$loc","renderEmpty","mergedSize","rawData","_mergedExpandable$chi","_useLazyKVMap","mapCacheRef","kvMap","useLazyKVMap","changeEventInfo","triggerOnChange","reset","changeInfo","resetPagination","scrollToFirstRowOnChange","scrollTo","currentDataSource","_useSorter","_useSorter2","transformSorterColumns","sorterTitleProps","getSorters","sortedData","_useFilter","_useFilter2","transformFilterColumns","_useTitleColumns","transformTitleColumns","_usePagination","_usePagination2","param","pageProp","getPaginationParam","_mergedPagination$cur","_mergedPagination$pag","_useSelection","_useSelection2","transformSelectionColumns","selectedKeySet","topPaginationNode","bottomPaginationNode","spinProps","paginationSize","defaultPosition","topPos","bottomPos","isDisable","toLowerCase","wrapperClassNames","mergedRowClassName","PresetColorRegex","RegExp","PresetStatusColorRegex","InternalTag","color","onClose","closeIcon","_a$closable","closable","isPresetColor","tagStyle","backgroundColor","presetColor","tagClassName","handleCloseClick","defaultPrevented","isNeedWave","tagProps","kids","tagNode","CloseOutlined","CheckableTag","factory","global","localStorage","setItem","getItem","removeItem","MESSAGE_TYPE","errorStr","validKey","ERROR","INVALID_TYPE","scope","_scope","OK","CONNECT_TIMEOUT","SUBSCRIBE_TIMEOUT","UNSUBSCRIBE_TIMEOUT","PING_TIMEOUT","INTERNAL_ERROR","CONNACK_RETURNCODE","SOCKET_ERROR","SOCKET_CLOSE","MALFORMED_UTF","UNSUPPORTED","INVALID_STATE","INVALID_ARGUMENT","UNSUPPORTED_OPERATION","INVALID_STORED_DATA","INVALID_MQTT_MESSAGE_TYPE","MALFORMED_UNICODE","BUFFER_FULL","CONNACK_RC","0","1","2","3","4","5","substitutions","part1","substring","part2","MqttProtoIdentifierv3","MqttProtoIdentifierv4","WireMessage","decodeMessage","input","digit","startingPos","first","messageInfo","remLength","multiplier","endPos","wireMessage","sessionPresent","returnCode","qos","readUint16","topicName","parseUTF8","messageIdentifier","Message","subarray","retained","duplicate","payloadMessage","writeUint16","buffer","writeString","utf8Length","stringToUTF8","UTF8Length","output","lowCharCode","utf16","byte1","byte2","byte3","byte4","encode","willMessagePayloadBytes","topicStrLength","destinationNameLength","willMessage","payloadBytes","Uint8Array","byteLength","userName","password","requestedQos","ArrayBuffer","mbi","number","numBytes","encodeMBI","byteStream","connectFlags","cleanSession","keepAliveInterval","Pinger","_client","_keepAliveInterval","isReset","pingReq","doTimeout","pinger","doPing","_trace","socket","_disconnected","Timeout","timeoutSeconds","ClientImpl","uri","port","_wsuri","_localKey","_msg_queue","_buffered_msg_queue","_sentMessages","_receivedMessages","_notify_msg_sent","_message_identifier","_sequence","restore","maxMessageIdentifier","connectOptions","hostIndex","onConnected","onMessageDelivered","traceFunction","_connectTimeout","sendPinger","receivePinger","_reconnectInterval","_reconnecting","_reconnectTimeout","disconnectedPublishing","disconnectedBufferSize","receiveBuffer","_traceBuffer","_MAX_TRACE_ENTRIES","connectOptionsMasked","_traceMask","uris","_doConnect","subscribeOptions","grantedQos","invocationContext","errorMessage","timeOut","_requires_ack","_schedule_message","unsubscribeOptions","sequence","getTraceLog","startTrace","stopTrace","wsurl","uriParts","binaryType","_on_socket_open","_on_socket_message","_on_socket_error","_on_socket_close","_process_queue","storedMessage","version","pubRecReceived","hex","messageBytes","payloadHex","parseInt","_socket_send","messageCount","messages","_deframeMessages","_handleMessage","byteArray","newData","errorStack","sentMessage","receivedMessage","sequencedMessages","msgId","pubRelMessage","reconnected","_connected","_receivePublish","_receiveMessage","pubCompMessage","wireMessageMasked","pubAckMessage","pubRecMessage","reconnect","_reconnect","errorText","mqttVersionExplicit","severity","traceObject","masked","traceObjectMasked","attr","newPayload","isView","DataView","newDestinationName","newQos","newRetained","newTopic","newDuplicate","Client","ipv6AddSBracket","clientIdLength","newOnConnected","newDisconnectedPublishing","newDisconnectedBufferSize","newOnConnectionLost","newOnMessageDelivered","newOnMessageArrived","trace","hosts","ports","stringPayload","usingURIs","ipv6","self","module","exports","cached","fresh","inner","createElement","outer","outerStyle","pointerEvents","appendChild","widthContained","widthScroll","removeChild","_options$element","oldStyle","styleKeys","cacheStyle","scrollHeight","innerWidth","scrollingEffectClassName","scrollingEffectClassNameReg","bodyClassName","trim","scrollBarSize","addClassName","locks","ScrollLocker","_this$options","reLock","findLock","lockTarget","unLock","lock","_this$options3","_this$options2","_this$options4","_this$options5","_findLock$options","_createSuper","Derived","hasNativeReflectConstruct","Reflect","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","openCount","supportDom","canUseDom","cacheOverflow","getParent","querySelectorAll","HTMLElement","PortalWrapper","componentRef","updateScrollLocker","prevVisible","scrollLocker","updateOpenCount","prevGetContainer","removeCurrentContainer","attachToParent","force","setWrapperClassName","_this$container","_this$container$paren","switchScrollingEffect","rafId","portal","getOpenCount","Portal","transitionEndObject","transition","WebkitTransition","MozTransition","OTransition","transitionStr","html","getElementsByTagName","transitionEnd","eventType","attachEvent","detachEvent","isNumeric","windowIsUndefined","getTouchParentScroll","differX","differY","isY","abs","isX","scrollY","scrollX","defaultView","currentDrawer","DrawerChild","domFocus","dom","focus","removeStartHandler","touches","startPos","clientX","clientY","removeMoveHandler","changedTouches","maskDom","handlerDom","contentDom","cancelable","onWrapperTransitionEnd","afterVisibleChange","contentWrapper","getCurrentDrawerSome","openLevelTransition","_this$getHorizontalBo","getHorizontalBoolAndPlacementName","isHorizontal","placementName","contentValue","setLevelAndScrolling","setLevelTransform","levelMove","duration","ease","showMask","levelDom","levelValue","$levelMove","$value","placementPos","toggleScrollingToDrawerAndBody","eventArray","domArray","addScrollingEffect","touchAction","passive","remScrollingEffect","widthTransition","transformTransition","heightTransition","getLevelDom","vars","nodeName","_self","passiveSupported","_this$props$scrollLoc","drawerId","now","random","round","_this$props8","_this$props9","_classnames","_this$props10","$open","defaultOpen","maskClosable","maskStyle","onHandleClick","keyboard","contentWrapperStyle","handlerChildren","msTransform","onTouchStart","onTouchMove","DrawerWrapper","_open","$forceRender","afterClose","DrawerContext","defaultPushState","distance","Drawer","_a$height","_a$placement","_a$maskClosable","_a$mask","mask","_a$level","_a$keyboard","_a$push","_push","_a$closeIcon","bodyStyle","drawerStyle","zIndex","destroyOnClose","headerStyle","footerStyle","internalPush","setPush","parentDrawer","destroyClose","pull","operations","isDestroyOnClose","onDestroyTransitionEnd","getOffsetStyle","offsetStyle","renderHeader","headerClassName","drawerClassName","_placement","getRcDrawerStyle","containerStyle","opacity","footerClassName","renderFooter","renderBody","customizeGetContainer","isLoading","setIsLoading","downloadFileFromS3","table","jsonKey","fileNumber","success","downloadUrl","log","parentRefetch","useI18next","dispatch","useDispatch","isAdmin","useSelector","auth","setIsVisible","form","setForm","formData","setFormData","formDisabled","setFormDisabled","step2details","chosedVariant","userChoosingCustomValues","step3details","userConfirmationCustomValues","resellerDetails","resellerSellingCustomValues","details","useMutation","gql","updateChosedVariant","onCompleted","actions","variant","onError","updateUserChosedVariant","onSubmit","setSubmitting","updateChosed_variantInput","dateFinalization","dateDelivered","dateCanceled","idVariant","Variant","variantDefinition","GoodOrService","GoodOrServiceType","resellerSellingCustomFieldsDef","formDefinition","fieldType","fieldProperties","placeholder","GoodsOrServices","Variants","required","errMessages","User","subscribedSince","subscribedUntil","isPast","parseISO","span","firstName","lastName","email","mobile","city","taxCode","file","confirmationDate","definitelyNotInterestedInBuying","FormGenerator","properties","hideCancelButton","submitButtonText","tagColors","REGISTRATO","PARTECIPANTE","SCELTO","CONFERMATO","CANCELLATO","CONTRATTUALIZZATO","CONSEGNATO","FATTURATO","INFORMAZIONI","tagOrder","urgenzaOrder","Alto","Medio","Basso","urgenzaColors","getColumns","as","additionalColumns","refetch","nominativo","discountCode","stage","urgenza","variante","Reseller","referente","dataPrimoContatto","userInBuyingGroup","useQuery","getBuyingGroupAsReseller","buyingGroupId","queryData","groupData","setGroupData","tableData","setTableData","tableColumns","setTableColumns","filteredCount","setFilteredCount","theGroupData","getBuying_group","UsersInBuyingGroup","tmpTableData","ChosedVariants","possibleVariant","GoodOrServiceVariants","registrationDate","participationDate","choosingDate","dateBilled","capitalizeWords","notInterestInBuying","paddingTop","extra","func","arrayPush","isFlattenable","baseFlatten","depth","predicate","isStrict","constant","identity","baseSetToString","string","trimmedEndIndex","reTrimStart","castPath","toKey","object","isPlainObject","flatten","overRest","setToString","isArguments","spreadableSymbol","isConcatSpreadable","nativeMax","otherArgs","baseGet","baseSlice","shortOut","nativeNow","lastCalled","stamp","remaining","reWhitespace","isObject","toNumber","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","baseGetTag","getPrototype","isObjectLike","funcProto","Function","objectProto","funcToString","objectCtorString","proto","Ctor","arrayMap","baseClone","baseUnset","copyObject","customOmitClone","flatRest","getAllKeysIn","paths","isDeep","CLONE_DEEP_FLAG","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","valueOf","isBinary"],"mappings":"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","file":"224b326d1232be699169e667fdf39bae0dfd5281-b824dae67e863978089e.js","sourcesContent":["// This icon file is generated automatically.\nvar LeftOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\"\n }\n }]\n },\n \"name\": \"left\",\n \"theme\": \"outlined\"\n};\nexport default LeftOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar LeftOutlined = function LeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: LeftOutlinedSvg\n }));\n};\n\nLeftOutlined.displayName = 'LeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport { ConsoleLogger as Logger, Credentials, DateUtils, Signer, Platform } from '@aws-amplify/core';\nimport axios from 'axios';\nimport { parse, format } from 'url';\nvar logger = new Logger('RestClient');\n/**\n* HTTP Client for REST requests. Send and receive JSON data.\n* Sign request with AWS credentials if available\n* Usage:\n
\nconst restClient = new RestClient();\nrestClient.get('...')\n    .then(function(data) {\n        console.log(data);\n    })\n    .catch(err => console.log(err));\n
\n*/\n\nvar RestClient =\n/** @class */\nfunction () {\n /**\n * @param {RestClientOptions} [options] - Instance options\n */\n function RestClient(options) {\n this._region = 'us-east-1'; // this will be updated by endpoint function\n\n this._service = 'execute-api'; // this can be updated by endpoint function\n\n this._custom_header = undefined; // this can be updated by endpoint function\n\n /**\n * This weak map provides functionality to let clients cancel\n * in-flight axios requests. https://github.com/axios/axios#cancellation\n *\n * 1. For every axios request, a unique cancel token is generated and added in the request.\n * 2. Promise for fulfilling the request is then mapped to that unique cancel token.\n * 3. The promise is returned to the client.\n * 4. Clients can either wait for the promise to fulfill or call `API.cancel(promise)` to cancel the request.\n * 5. If `API.cancel(promise)` is called, then the corresponding cancel token is retrieved from the map below.\n * 6. Promise returned to the client will be in rejected state with the error provided during cancel.\n * 7. Clients can check if the error is because of cancelling by calling `API.isCancel(error)`.\n *\n * For more details, see https://github.com/aws-amplify/amplify-js/pull/3769#issuecomment-552660025\n */\n\n this._cancelTokenMap = null;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\n\n if (this._cancelTokenMap == null) {\n this._cancelTokenMap = new WeakMap();\n }\n }\n /**\n * Update AWS credentials\n * @param {AWSCredentials} credentials - AWS credentials\n *\n updateCredentials(credentials: AWSCredentials) {\n this.options.credentials = credentials;\n }\n */\n\n /**\n * Basic HTTP request. Customizable\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {string} method - Request HTTP method\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.ajax = function (urlOrApiInfo, method, init) {\n return __awaiter(this, void 0, void 0, function () {\n var parsed_url, url, region, service, custom_header, params, libraryHeaders, userAgent, initParams, isAllResponse, custom_header_obj, _a, _b, search, parsedUrl;\n\n var _this = this;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n logger.debug(method, urlOrApiInfo);\n region = 'us-east-1';\n service = 'execute-api';\n custom_header = undefined;\n\n if (typeof urlOrApiInfo === 'string') {\n parsed_url = this._parseUrl(urlOrApiInfo);\n url = urlOrApiInfo;\n } else {\n url = urlOrApiInfo.endpoint, custom_header = urlOrApiInfo.custom_header, region = urlOrApiInfo.region, service = urlOrApiInfo.service;\n parsed_url = this._parseUrl(urlOrApiInfo.endpoint);\n }\n\n params = {\n method: method,\n url: url,\n host: parsed_url.host,\n path: parsed_url.path,\n headers: {},\n data: null,\n responseType: 'json',\n timeout: 0,\n cancelToken: null\n };\n libraryHeaders = {};\n\n if (Platform.isReactNative) {\n userAgent = Platform.userAgent || 'aws-amplify/0.1.x';\n libraryHeaders = {\n 'User-Agent': userAgent\n };\n }\n\n initParams = Object.assign({}, init);\n isAllResponse = initParams.response;\n\n if (initParams.body) {\n if (typeof FormData === 'function' && initParams.body instanceof FormData) {\n libraryHeaders['Content-Type'] = 'multipart/form-data';\n params.data = initParams.body;\n } else {\n libraryHeaders['Content-Type'] = 'application/json; charset=UTF-8';\n params.data = JSON.stringify(initParams.body);\n }\n }\n\n if (initParams.responseType) {\n params.responseType = initParams.responseType;\n }\n\n if (initParams.withCredentials) {\n params['withCredentials'] = initParams.withCredentials;\n }\n\n if (initParams.timeout) {\n params.timeout = initParams.timeout;\n }\n\n if (initParams.cancellableToken) {\n params.cancelToken = initParams.cancellableToken.token;\n }\n\n params['signerServiceInfo'] = initParams.signerServiceInfo;\n if (!(typeof custom_header === 'function')) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , custom_header()];\n\n case 1:\n _a = _c.sent();\n return [3\n /*break*/\n , 3];\n\n case 2:\n _a = undefined;\n _c.label = 3;\n\n case 3:\n custom_header_obj = _a;\n params.headers = __assign(__assign(__assign({}, libraryHeaders), custom_header_obj), initParams.headers);\n _b = parse(url, true, true), search = _b.search, parsedUrl = __rest(_b, [\"search\"]);\n params.url = format(__assign(__assign({}, parsedUrl), {\n query: __assign(__assign({}, parsedUrl.query), initParams.queryStringParameters || {})\n })); // Do not sign the request if client has added 'Authorization' header,\n // which means custom authorizer.\n\n if (typeof params.headers['Authorization'] !== 'undefined') {\n params.headers = Object.keys(params.headers).reduce(function (acc, k) {\n if (params.headers[k]) {\n acc[k] = params.headers[k];\n }\n\n return acc; // tslint:disable-next-line:align\n }, {});\n return [2\n /*return*/\n , this._request(params, isAllResponse)];\n } // Signing the request in case there credentials are available\n\n\n return [2\n /*return*/\n , this.Credentials.get().then(function (credentials) {\n return _this._signed(__assign({}, params), credentials, isAllResponse, {\n region: region,\n service: service\n }).catch(function (error) {\n if (DateUtils.isClockSkewError(error)) {\n var headers = error.response.headers;\n var dateHeader = headers && (headers.date || headers.Date);\n var responseDate = new Date(dateHeader);\n var requestDate = DateUtils.getDateFromHeaderString(params.headers['x-amz-date']); // Compare local clock to the server clock\n\n if (DateUtils.isClockSkewed(responseDate)) {\n DateUtils.setClockOffset(responseDate.getTime() - requestDate.getTime());\n return _this.ajax(urlOrApiInfo, method, init);\n }\n }\n\n throw error;\n });\n }, function (err) {\n logger.debug('No credentials available, the request will be unsigned');\n return _this._request(params, isAllResponse);\n })];\n }\n });\n });\n };\n /**\n * GET HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {JSON} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.get = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'GET', init);\n };\n /**\n * PUT HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.put = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'PUT', init);\n };\n /**\n * PATCH HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.patch = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'PATCH', init);\n };\n /**\n * POST HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.post = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'POST', init);\n };\n /**\n * DELETE HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.del = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'DELETE', init);\n };\n /**\n * HEAD HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.head = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'HEAD', init);\n };\n /**\n * Cancel an inflight API request\n * @param {Promise} request - The request promise to cancel\n * @param {string} [message] - A message to include in the cancelation exception\n */\n\n\n RestClient.prototype.cancel = function (request, message) {\n var source = this._cancelTokenMap.get(request);\n\n if (source) {\n source.cancel(message);\n }\n\n return true;\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n RestClient.prototype.isCancel = function (error) {\n return axios.isCancel(error);\n };\n /**\n * Retrieves a new and unique cancel token which can be\n * provided in an axios request to be cancelled later.\n */\n\n\n RestClient.prototype.getCancellableToken = function () {\n return axios.CancelToken.source();\n };\n /**\n * Updates the weakmap with a response promise and its\n * cancel token such that the cancel token can be easily\n * retrieved (and used for cancelling the request)\n */\n\n\n RestClient.prototype.updateRequestToBeCancellable = function (promise, cancelTokenSource) {\n this._cancelTokenMap.set(promise, cancelTokenSource);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n RestClient.prototype.endpoint = function (apiName) {\n var _this = this;\n\n var cloud_logic_array = this._options.endpoints;\n var response = '';\n\n if (!Array.isArray(cloud_logic_array)) {\n return response;\n }\n\n cloud_logic_array.forEach(function (v) {\n if (v.name === apiName) {\n response = v.endpoint;\n\n if (typeof v.region === 'string') {\n _this._region = v.region;\n } else if (typeof _this._options.region === 'string') {\n _this._region = _this._options.region;\n }\n\n if (typeof v.service === 'string') {\n _this._service = v.service || 'execute-api';\n } else {\n _this._service = 'execute-api';\n }\n\n if (typeof v.custom_header === 'function') {\n _this._custom_header = v.custom_header;\n } else {\n _this._custom_header = undefined;\n }\n }\n });\n return response;\n };\n /** private methods **/\n\n\n RestClient.prototype._signed = function (params, credentials, isAllResponse, _a) {\n var service = _a.service,\n region = _a.region;\n\n var signerServiceInfoParams = params.signerServiceInfo,\n otherParams = __rest(params, [\"signerServiceInfo\"]);\n\n var endpoint_region = region || this._region || this._options.region;\n var endpoint_service = service || this._service || this._options.service;\n var creds = {\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken\n };\n var endpointInfo = {\n region: endpoint_region,\n service: endpoint_service\n };\n var signerServiceInfo = Object.assign(endpointInfo, signerServiceInfoParams);\n var signed_params = Signer.sign(otherParams, creds, signerServiceInfo);\n\n if (signed_params.data) {\n signed_params.body = signed_params.data;\n }\n\n logger.debug('Signed Request: ', signed_params);\n delete signed_params.headers['host'];\n return axios(signed_params).then(function (response) {\n return isAllResponse ? response : response.data;\n }).catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n\n RestClient.prototype._request = function (params, isAllResponse) {\n if (isAllResponse === void 0) {\n isAllResponse = false;\n }\n\n return axios(params).then(function (response) {\n return isAllResponse ? response : response.data;\n }).catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n\n RestClient.prototype._parseUrl = function (url) {\n var parts = url.split('/');\n return {\n host: parts[2],\n path: '/' + parts.slice(3).join('/')\n };\n };\n\n return RestClient;\n}();\n\nexport { RestClient };","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { RestClient } from './RestClient';\nimport { Amplify, ConsoleLogger as Logger, Credentials } from '@aws-amplify/core';\nvar logger = new Logger('RestAPI');\n/**\n * Export Cloud Logic APIs\n */\n\nvar RestAPIClass =\n/** @class */\nfunction () {\n /**\n * Initialize Rest API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function RestAPIClass(options) {\n this._api = null;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\n }\n\n RestAPIClass.prototype.getModuleName = function () {\n return 'RestAPI';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n RestAPIClass.prototype.configure = function (options) {\n var _a = options || {},\n _b = _a.API,\n API = _b === void 0 ? {} : _b,\n otherOptions = __rest(_a, [\"API\"]);\n\n var opt = __assign(__assign({}, otherOptions), API);\n\n logger.debug('configure Rest API', {\n opt: opt\n });\n\n if (opt['aws_project_region']) {\n if (opt['aws_cloud_logic_custom']) {\n var custom = opt['aws_cloud_logic_custom'];\n opt.endpoints = typeof custom === 'string' ? JSON.parse(custom) : custom;\n }\n\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {}\n });\n }\n\n if (Array.isArray(opt.endpoints)) {\n // Check if endpoints has custom_headers and validate if is a function\n opt.endpoints.forEach(function (endpoint) {\n if (typeof endpoint.custom_header !== 'undefined' && typeof endpoint.custom_header !== 'function') {\n logger.warn('Rest API ' + endpoint.name + ', custom_header should be a function');\n endpoint.custom_header = undefined;\n }\n });\n } else if (this._options && Array.isArray(this._options.endpoints)) {\n opt.endpoints = this._options.endpoints;\n } else {\n opt.endpoints = [];\n }\n\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n\n\n RestAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest API instance');\n this._api = new RestClient(this._options); // Share Amplify instance with client for SSR\n\n this._api.Credentials = this.Credentials;\n return true;\n };\n /**\n * Make a GET request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestAPIClass.prototype.get = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.get(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n } catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestAPIClass.prototype.post = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.post(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n } catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestAPIClass.prototype.put = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.put(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n } catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestAPIClass.prototype.patch = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.patch(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n } catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestAPIClass.prototype.del = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.del(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n } catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestAPIClass.prototype.head = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.head(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n } catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n RestAPIClass.prototype.isCancel = function (error) {\n return this._api.isCancel(error);\n };\n /**\n * Cancels an inflight request\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n RestAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n RestAPIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , this._api.endpoint(apiName)];\n });\n });\n };\n /**\n * Getting endpoint info for API\n * @param {string} apiName - The name of the api\n * @param {string} path - The path of the api that is going to accessed\n * @return {ApiInfo} - The endpoint information for that api-name\n */\n\n\n RestAPIClass.prototype.getEndpointInfo = function (apiName, path) {\n var cloud_logic_array = this._options.endpoints;\n\n if (!Array.isArray(cloud_logic_array)) {\n throw new Error(\"API category not configured\");\n }\n\n var apiConfig = cloud_logic_array.find(function (api) {\n return api.name === apiName;\n });\n\n if (!apiConfig) {\n throw new Error(\"API \" + apiName + \" does not exist\");\n }\n\n var response = {\n endpoint: apiConfig.endpoint + path\n };\n\n if (typeof apiConfig.region === 'string') {\n response.region = apiConfig.region;\n } else if (typeof this._options.region === 'string') {\n response.region = this._options.region;\n }\n\n if (typeof apiConfig.service === 'string') {\n response.service = apiConfig.service || 'execute-api';\n } else {\n response.service = 'execute-api';\n }\n\n if (typeof apiConfig.custom_header === 'function') {\n response.custom_header = apiConfig.custom_header;\n } else {\n response.custom_header = undefined;\n }\n\n return response;\n };\n\n return RestAPIClass;\n}();\n\nexport { RestAPIClass };\nexport var RestAPI = new RestAPIClass(null);\nAmplify.register(RestAPI);","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { getLocation } from '../language/location';\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = {};\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n /* eslint-disable no-undef-init */\n\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var k in node) {\n if (node.hasOwnProperty(k)) {\n clone[k] = node[k];\n }\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + JSON.stringify(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { visit } from './visitor';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n locations = _ref31.locations;\n return 'directive @' + name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nfunction printBlockString(value, isDescription) {\n var escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1 ? \"\\\"\\\"\\\"\".concat(escaped.replace(/\"$/, '\"\\n'), \"\\\"\\\"\\\"\") : \"\\\"\\\"\\\"\\n\".concat(isDescription ? escaped : indent(escaped), \"\\n\\\"\\\"\\\"\");\n}","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Used to print values in error messages.\n */\n\n\nexport default function inspect(value) {\n return value && _typeof(value) === 'object' ? typeof value.inspect === 'function' ? value.inspect() : Array.isArray(value) ? '[' + value.map(inspect).join(', ') + ']' : '{' + Object.keys(value).map(function (k) {\n return \"\".concat(k, \": \").concat(inspect(value[k]));\n }).join(', ') + '}' : typeof value === 'string' ? '\"' + value + '\"' : typeof value === 'function' ? \"[function \".concat(value.name, \"]\") : String(value);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nexport default function invariant(condition, message) {\n /* istanbul ignore else */\n if (!condition) {\n throw new Error(message);\n }\n}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n\nimport invariant from '../jsutils/invariant';\nimport defineToStringTag from '../jsutils/defineToStringTag';\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\n\nexport var Source = function Source(body, name, locationOffset) {\n _defineProperty(this, \"body\", void 0);\n\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"locationOffset\", void 0);\n\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n !(this.locationOffset.line > 0) ? invariant(0, 'line in locationOffset is 1-indexed and must be positive') : void 0;\n !(this.locationOffset.column > 0) ? invariant(0, 'column in locationOffset is 1-indexed and must be positive') : void 0;\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(Source);","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The `applyToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method applyToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function applyToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { GraphQLError } from './GraphQLError';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * Coffeescript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport default function blockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent < line.length && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n if (commonIndent) {\n for (var _i = 1; _i < lines.length; _i++) {\n lines[_i] = lines[_i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { syntaxError } from '../error';\nimport blockStringValue from './blockStringValue';\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport function createLexer(source, options) {\n var startOfFileToken = new Tok(TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\n\n\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\n/**\n * A helper function to describe a token as a string for debugging\n */\n\nexport function getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}\nvar charCodeAt = String.prototype.charCodeAt;\nvar slice = String.prototype.slice;\n/**\n * Helper function for constructing the Token object.\n */\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nTok.prototype.toJSON = Tok.prototype.inspect = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n};\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace and comments until it finds the next lexable\n * token, then lexes punctuators immediately or calls the appropriate helper\n * function for more complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = charCodeAt.call(body, pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (charCodeAt.call(body, pos + 1) === 46 && charCodeAt.call(body, pos + 2) === 46) {\n return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return \"Unexpected single quote character ('), did you mean to use \" + 'a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * or commented character, then returns the position of that character for\n * lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = charCodeAt.call(body, position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (charCodeAt.call(body, position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = charCodeAt.call(body, ++position);\n } while (code !== null && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(TokenKind.COMMENT, start, position, line, col, prev, slice.call(body, start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = charCodeAt.call(body, ++position);\n }\n\n if (code === 48) {\n // 0\n code = charCodeAt.call(body, ++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = charCodeAt.call(body, ++position);\n }\n\n position = readDigits(source, position, code);\n }\n\n return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, slice.call(body, start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = charCodeAt.call(body, ++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += slice.call(body, chunkStart, position - 1);\n code = charCodeAt.call(body, position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n // u\n var charCode = uniCharCode(charCodeAt.call(body, position + 1), charCodeAt.call(body, position + 2), charCodeAt.call(body, position + 3), charCodeAt.call(body, position + 4));\n\n if (charCode < 0) {\n throw syntaxError(source, position, 'Invalid character escape sequence: ' + \"\\\\u\".concat(body.slice(position + 1, position + 5), \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34) {\n rawValue += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, blockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n } // Escape Triple-Quote (\\\"\"\")\n\n\n if (code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {\n rawValue += slice.call(body, chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexidecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && (code = charCodeAt.call(body, position)) !== null && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(TokenKind.NAME, start, position, line, col, prev, slice.call(body, start, position));\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport inspect from '../jsutils/inspect';\nimport { Source } from './source';\nimport { syntaxError } from '../error';\nimport { createLexer, TokenKind, getTokenDesc } from './lexer';\nimport { Kind } from './kinds';\nimport { DirectiveLocation } from './directiveLocation';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\n\nexport function parse(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n\n if (!(sourceObj instanceof Source)) {\n throw new TypeError(\"Must provide Source. Received: \".concat(inspect(sourceObj)));\n }\n\n var lexer = createLexer(sourceObj, options || {});\n return parseDocument(lexer);\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var value = parseValueLiteral(lexer, false);\n expect(lexer, TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var type = parseTypeReference(lexer);\n expect(lexer, TokenKind.EOF);\n return type;\n}\n/**\n * Converts a name lex token into a name parse node.\n */\n\nfunction parseName(lexer) {\n var token = expect(lexer, TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: loc(lexer, token)\n };\n} // Implements the parsing rules in the Document section.\n\n/**\n * Document : Definition+\n */\n\n\nfunction parseDocument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: many(lexer, TokenKind.SOF, parseDefinition, TokenKind.EOF),\n loc: loc(lexer, start)\n };\n}\n/**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n */\n\n\nfunction parseDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n case 'fragment':\n return parseExecutableDefinition(lexer);\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return parseTypeSystemDefinition(lexer);\n\n case 'extend':\n return parseTypeSystemExtension(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseExecutableDefinition(lexer);\n } else if (peekDescription(lexer)) {\n return parseTypeSystemDefinition(lexer);\n }\n\n throw unexpected(lexer);\n}\n/**\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n\n\nfunction parseExecutableDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return parseOperationDefinition(lexer);\n\n case 'fragment':\n return parseFragmentDefinition(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseOperationDefinition(lexer);\n }\n\n throw unexpected(lexer);\n} // Implements the parsing rules in the Operations section.\n\n/**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n\nfunction parseOperationDefinition(lexer) {\n var start = lexer.token;\n\n if (peek(lexer, TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n var operation = parseOperationType(lexer);\n var name;\n\n if (peek(lexer, TokenKind.NAME)) {\n name = parseName(lexer);\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: parseVariableDefinitions(lexer),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationType : one of query mutation subscription\n */\n\n\nfunction parseOperationType(lexer) {\n var operationToken = expect(lexer, TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw unexpected(lexer, operationToken);\n}\n/**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n\nfunction parseVariableDefinitions(lexer) {\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, parseVariableDefinition, TokenKind.PAREN_R) : [];\n}\n/**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseVariableDefinition(lexer) {\n var start = lexer.token;\n\n if (lexer.options.experimentalVariableDefinitionDirectives) {\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n directives: parseDirectives(lexer, true),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Variable : $ Name\n */\n\n\nfunction parseVariable(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * SelectionSet : { Selection+ }\n */\n\n\nfunction parseSelectionSet(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: many(lexer, TokenKind.BRACE_L, parseSelection, TokenKind.BRACE_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n\nfunction parseSelection(lexer) {\n return peek(lexer, TokenKind.SPREAD) ? parseFragment(lexer) : parseField(lexer);\n}\n/**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n\nfunction parseField(lexer) {\n var start = lexer.token;\n var nameOrAlias = parseName(lexer);\n var alias;\n var name;\n\n if (skip(lexer, TokenKind.COLON)) {\n alias = nameOrAlias;\n name = parseName(lexer);\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: parseArguments(lexer, false),\n directives: parseDirectives(lexer, false),\n selectionSet: peek(lexer, TokenKind.BRACE_L) ? parseSelectionSet(lexer) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n\nfunction parseArguments(lexer, isConst) {\n var item = isConst ? parseConstArgument : parseArgument;\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, item, TokenKind.PAREN_R) : [];\n}\n/**\n * Argument[Const] : Name : Value[?Const]\n */\n\n\nfunction parseArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, false)),\n loc: loc(lexer, start)\n };\n}\n\nfunction parseConstArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseConstValue(lexer)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Fragments section.\n\n/**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n\nfunction parseFragment(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.SPREAD);\n\n if (peek(lexer, TokenKind.NAME) && lexer.token.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: parseFragmentName(lexer),\n directives: parseDirectives(lexer, false),\n loc: loc(lexer, start)\n };\n }\n\n var typeCondition;\n\n if (lexer.token.value === 'on') {\n lexer.advance();\n typeCondition = parseNamedType(lexer);\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: typeCondition,\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n\nfunction parseFragmentDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (lexer.options.experimentalFragmentVariables) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n variableDefinitions: parseVariableDefinitions(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentName : Name but not `on`\n */\n\n\nfunction parseFragmentName(lexer) {\n if (lexer.token.value === 'on') {\n throw unexpected(lexer);\n }\n\n return parseName(lexer);\n} // Implements the parsing rules in the Values section.\n\n/**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n\nfunction parseValueLiteral(lexer, isConst) {\n var token = lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return parseList(lexer, isConst);\n\n case TokenKind.BRACE_L:\n return parseObject(lexer, isConst);\n\n case TokenKind.INT:\n lexer.advance();\n return {\n kind: Kind.INT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.FLOAT:\n lexer.advance();\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return parseStringLiteral(lexer);\n\n case TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n lexer.advance();\n return {\n kind: Kind.BOOLEAN,\n value: token.value === 'true',\n loc: loc(lexer, token)\n };\n } else if (token.value === 'null') {\n lexer.advance();\n return {\n kind: Kind.NULL,\n loc: loc(lexer, token)\n };\n }\n\n lexer.advance();\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return parseVariable(lexer);\n }\n\n break;\n }\n\n throw unexpected(lexer);\n}\n\nfunction parseStringLiteral(lexer) {\n var token = lexer.token;\n lexer.advance();\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: loc(lexer, token)\n };\n}\n\nexport function parseConstValue(lexer) {\n return parseValueLiteral(lexer, true);\n}\n\nfunction parseValueValue(lexer) {\n return parseValueLiteral(lexer, false);\n}\n/**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n\nfunction parseList(lexer, isConst) {\n var start = lexer.token;\n var item = isConst ? parseConstValue : parseValueValue;\n return {\n kind: Kind.LIST,\n values: any(lexer, TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n\n\nfunction parseObject(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.BRACE_L);\n var fields = [];\n\n while (!skip(lexer, TokenKind.BRACE_R)) {\n fields.push(parseObjectField(lexer, isConst));\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n\nfunction parseObjectField(lexer, isConst) {\n var start = lexer.token;\n return {\n kind: Kind.OBJECT_FIELD,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, isConst)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Directives section.\n\n/**\n * Directives[Const] : Directive[?Const]+\n */\n\n\nfunction parseDirectives(lexer, isConst) {\n var directives = [];\n\n while (peek(lexer, TokenKind.AT)) {\n directives.push(parseDirective(lexer, isConst));\n }\n\n return directives;\n}\n/**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n\n\nfunction parseDirective(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: parseName(lexer),\n arguments: parseArguments(lexer, isConst),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Types section.\n\n/**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n\nexport function parseTypeReference(lexer) {\n var start = lexer.token;\n var type;\n\n if (skip(lexer, TokenKind.BRACKET_L)) {\n type = parseTypeReference(lexer);\n expect(lexer, TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n } else {\n type = parseNamedType(lexer);\n }\n\n if (skip(lexer, TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n }\n\n return type;\n}\n/**\n * NamedType : Name\n */\n\nexport function parseNamedType(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Type Definition section.\n\n/**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\nfunction parseTypeSystemDefinition(lexer) {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = peekDescription(lexer) ? lexer.lookahead() : lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaDefinition(lexer);\n\n case 'scalar':\n return parseScalarTypeDefinition(lexer);\n\n case 'type':\n return parseObjectTypeDefinition(lexer);\n\n case 'interface':\n return parseInterfaceTypeDefinition(lexer);\n\n case 'union':\n return parseUnionTypeDefinition(lexer);\n\n case 'enum':\n return parseEnumTypeDefinition(lexer);\n\n case 'input':\n return parseInputObjectTypeDefinition(lexer);\n\n case 'directive':\n return parseDirectiveDefinition(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n\nfunction peekDescription(lexer) {\n return peek(lexer, TokenKind.STRING) || peek(lexer, TokenKind.BLOCK_STRING);\n}\n/**\n * Description : StringValue\n */\n\n\nfunction parseDescription(lexer) {\n if (peekDescription(lexer)) {\n return parseStringLiteral(lexer);\n }\n}\n/**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n\n\nfunction parseSchemaDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n\nfunction parseOperationTypeDefinition(lexer) {\n var start = lexer.token;\n var operation = parseOperationType(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseNamedType(lexer);\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n\nfunction parseScalarTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n\nfunction parseImplementsInterfaces(lexer) {\n var types = [];\n\n if (lexer.token.value === 'implements') {\n lexer.advance(); // Optional leading ampersand\n\n skip(lexer, TokenKind.AMP);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.AMP) || // Legacy support for the SDL?\n lexer.options.allowLegacySDLImplementsInterfaces && peek(lexer, TokenKind.NAME));\n }\n\n return types;\n}\n/**\n * FieldsDefinition : { FieldDefinition+ }\n */\n\n\nfunction parseFieldsDefinition(lexer) {\n // Legacy support for the SDL?\n if (lexer.options.allowLegacySDLEmptyFields && peek(lexer, TokenKind.BRACE_L) && lexer.lookahead().kind === TokenKind.BRACE_R) {\n lexer.advance();\n lexer.advance();\n return [];\n }\n\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseFieldDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n\nfunction parseFieldDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n\nfunction parseArgumentDefs(lexer) {\n if (!peek(lexer, TokenKind.PAREN_L)) {\n return [];\n }\n\n return many(lexer, TokenKind.PAREN_L, parseInputValueDef, TokenKind.PAREN_R);\n}\n/**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseInputValueDef(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var defaultValue;\n\n if (skip(lexer, TokenKind.EQUALS)) {\n defaultValue = parseConstValue(lexer);\n }\n\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseInterfaceTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n\nfunction parseUnionTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n\nfunction parseUnionMemberTypes(lexer) {\n var types = [];\n\n if (skip(lexer, TokenKind.EQUALS)) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n }\n\n return types;\n}\n/**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n\nfunction parseEnumTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n\n\nfunction parseEnumValuesDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseEnumValueDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n\n\nfunction parseEnumValueDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n\nfunction parseInputObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n\n\nfunction parseInputFieldsDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseInputValueDef, TokenKind.BRACE_R) : [];\n}\n/**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n\nfunction parseTypeSystemExtension(lexer) {\n var keywordToken = lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaExtension(lexer);\n\n case 'scalar':\n return parseScalarTypeExtension(lexer);\n\n case 'type':\n return parseObjectTypeExtension(lexer);\n\n case 'interface':\n return parseInterfaceTypeExtension(lexer);\n\n case 'union':\n return parseUnionTypeExtension(lexer);\n\n case 'enum':\n return parseEnumTypeExtension(lexer);\n\n case 'input':\n return parseInputObjectTypeExtension(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n/**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n\n\nfunction parseSchemaExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R) : [];\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n\nfunction parseScalarTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n\n if (directives.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n\nfunction parseObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n\n\nfunction parseInterfaceTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n\nfunction parseUnionTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n\n if (directives.length === 0 && types.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n\nfunction parseEnumTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n\n if (directives.length === 0 && values.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n\nfunction parseInputObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? on DirectiveLocations\n */\n\n\nfunction parseDirectiveDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'directive');\n expect(lexer, TokenKind.AT);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expectKeyword(lexer, 'on');\n var locations = parseDirectiveLocations(lexer);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n locations: locations,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n\nfunction parseDirectiveLocations(lexer) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(parseDirectiveLocation(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n\n return locations;\n}\n/*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n\nfunction parseDirectiveLocation(lexer) {\n var start = lexer.token;\n var name = parseName(lexer);\n\n if (DirectiveLocation.hasOwnProperty(name.value)) {\n return name;\n }\n\n throw unexpected(lexer, start);\n} // Core parsing utility functions\n\n/**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n\n\nfunction loc(lexer, startToken) {\n if (!lexer.options.noLocation) {\n return new Loc(startToken, lexer.lastToken, lexer.source);\n }\n}\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nLoc.prototype.toJSON = Loc.prototype.inspect = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n};\n/**\n * Determines if the next token is of a given kind\n */\n\n\nfunction peek(lexer, kind) {\n return lexer.token.kind === kind;\n}\n/**\n * If the next token is of the given kind, return true after advancing\n * the lexer. Otherwise, do not change the parser state and return false.\n */\n\n\nfunction skip(lexer, kind) {\n var match = lexer.token.kind === kind;\n\n if (match) {\n lexer.advance();\n }\n\n return match;\n}\n/**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n\n\nfunction expect(lexer, kind) {\n var token = lexer.token;\n\n if (token.kind === kind) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n}\n/**\n * If the next token is a keyword with the given value, return that token after\n * advancing the lexer. Otherwise, do not change the parser state and return\n * false.\n */\n\n\nfunction expectKeyword(lexer, value) {\n var token = lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n}\n/**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n\n\nfunction unexpected(lexer, atToken) {\n var token = atToken || lexer.token;\n return syntaxError(lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n}\n/**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction any(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}\n/**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction many(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [parseFn(lexer)];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nvar logger = new Logger('I18n');\n/**\n * Language transition class\n */\n\nvar I18n =\n/** @class */\nfunction () {\n /**\n * @constructor\n * Initialize with configurations\n * @param {Object} options\n */\n function I18n(options) {\n /**\n * @private\n */\n this._options = null;\n /**\n * @private\n */\n\n this._lang = null;\n /**\n * @private\n */\n\n this._dict = {};\n this._options = Object.assign({}, options);\n this._lang = this._options.language;\n\n if (!this._lang && typeof window !== 'undefined' && window && window.navigator) {\n this._lang = window.navigator.language;\n }\n\n logger.debug(this._lang);\n }\n /**\n * @method\n * Explicitly setting language\n * @param {String} lang\n */\n\n\n I18n.prototype.setLanguage = function (lang) {\n this._lang = lang;\n };\n /**\n * @method\n * Get value\n * @param {String} key\n * @param {String} defVal - Default value\n */\n\n\n I18n.prototype.get = function (key, defVal) {\n if (defVal === void 0) {\n defVal = undefined;\n }\n\n if (!this._lang) {\n return typeof defVal !== 'undefined' ? defVal : key;\n }\n\n var lang = this._lang;\n var val = this.getByLanguage(key, lang);\n\n if (val) {\n return val;\n }\n\n if (lang.indexOf('-') > 0) {\n val = this.getByLanguage(key, lang.split('-')[0]);\n }\n\n if (val) {\n return val;\n }\n\n return typeof defVal !== 'undefined' ? defVal : key;\n };\n /**\n * @method\n * Get value according to specified language\n * @param {String} key\n * @param {String} language - Specified langurage to be used\n * @param {String} defVal - Default value\n */\n\n\n I18n.prototype.getByLanguage = function (key, language, defVal) {\n if (defVal === void 0) {\n defVal = null;\n }\n\n if (!language) {\n return defVal;\n }\n\n var lang_dict = this._dict[language];\n\n if (!lang_dict) {\n return defVal;\n }\n\n return lang_dict[key];\n };\n /**\n * @method\n * Add vocabularies for one language\n * @param {String} language - Language of the dictionary\n * @param {Object} vocabularies - Object that has key-value as dictionary entry\n */\n\n\n I18n.prototype.putVocabulariesForLanguage = function (language, vocabularies) {\n var lang_dict = this._dict[language];\n\n if (!lang_dict) {\n lang_dict = this._dict[language] = {};\n }\n\n Object.assign(lang_dict, vocabularies);\n };\n /**\n * @method\n * Add vocabularies for one language\n * @param {Object} vocabularies - Object that has language as key,\n * vocabularies of each language as value\n */\n\n\n I18n.prototype.putVocabularies = function (vocabularies) {\n var _this = this;\n\n Object.keys(vocabularies).map(function (key) {\n _this.putVocabulariesForLanguage(key, vocabularies[key]);\n });\n };\n\n return I18n;\n}();\n\nexport { I18n };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { I18n as I18nClass } from './I18n';\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { Amplify } from '../Amplify';\nvar logger = new Logger('I18n');\nvar _config = null;\nvar _i18n = null;\n/**\n * Export I18n APIs\n */\n\nvar I18n =\n/** @class */\nfunction () {\n function I18n() {}\n /**\n * @static\n * @method\n * Configure I18n part\n * @param {Object} config - Configuration of the I18n\n */\n\n\n I18n.configure = function (config) {\n logger.debug('configure I18n');\n\n if (!config) {\n return _config;\n }\n\n _config = Object.assign({}, _config, config.I18n || config);\n I18n.createInstance();\n return _config;\n };\n\n I18n.getModuleName = function () {\n return 'I18n';\n };\n /**\n * @static\n * @method\n * Create an instance of I18n for the library\n */\n\n\n I18n.createInstance = function () {\n logger.debug('create I18n instance');\n\n if (_i18n) {\n return;\n }\n\n _i18n = new I18nClass(_config);\n };\n /**\n * @static @method\n * Explicitly setting language\n * @param {String} lang\n */\n\n\n I18n.setLanguage = function (lang) {\n I18n.checkConfig();\n return _i18n.setLanguage(lang);\n };\n /**\n * @static @method\n * Get value\n * @param {String} key\n * @param {String} defVal - Default value\n */\n\n\n I18n.get = function (key, defVal) {\n if (!I18n.checkConfig()) {\n return typeof defVal === 'undefined' ? key : defVal;\n }\n\n return _i18n.get(key, defVal);\n };\n /**\n * @static\n * @method\n * Add vocabularies for one language\n * @param {String} langurage - Language of the dictionary\n * @param {Object} vocabularies - Object that has key-value as dictionary entry\n */\n\n\n I18n.putVocabulariesForLanguage = function (language, vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabulariesForLanguage(language, vocabularies);\n };\n /**\n * @static\n * @method\n * Add vocabularies for one language\n * @param {Object} vocabularies - Object that has language as key,\n * vocabularies of each language as value\n */\n\n\n I18n.putVocabularies = function (vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabularies(vocabularies);\n };\n\n I18n.checkConfig = function () {\n if (!_i18n) {\n _i18n = new I18nClass(_config);\n }\n\n return true;\n };\n\n return I18n;\n}();\n\nexport { I18n };\nAmplify.register(I18n);\n/**\n * @deprecated use named import\n */\n\nexport default I18n;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport Observable from 'zen-observable-ts';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('MqttOverWSProvider');\nexport function mqttTopicMatch(filter, topic) {\n var filterArray = filter.split('/');\n var length = filterArray.length;\n var topicArray = topic.split('/');\n\n for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#') return topicArray.length >= length;\n if (left !== '+' && left !== right) return false;\n }\n\n return length === topicArray.length;\n}\n\nvar ClientsQueue =\n/** @class */\nfunction () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n return __generator(this, function (_a) {\n promise = this.promises.get(clientId);\n\n if (promise) {\n return [2\n /*return*/\n , promise];\n }\n\n promise = clientFactory(clientId);\n this.promises.set(clientId, promise);\n return [2\n /*return*/\n , promise];\n });\n });\n };\n\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function get() {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises.delete(clientId);\n };\n\n return ClientsQueue;\n}();\n\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\n\nvar MqttOverWSProvider =\n/** @class */\nfunction (_super) {\n __extends(MqttOverWSProvider, _super);\n\n function MqttOverWSProvider(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _this = _super.call(this, __assign(__assign({}, options), {\n clientId: options.clientId || uuid()\n })) || this;\n\n _this._clientsQueue = new ClientsQueue();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n return _this;\n }\n\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function get() {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function get() {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function get() {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function get() {\n return !this.options.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n\n var clientId = _a.clientId,\n errorCode = _a.errorCode,\n args = __rest(_a, [\"clientId\", \"errorCode\"]);\n\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({\n errorCode: errorCode\n }, args), null, 2));\n var topicsToDelete_1 = [];\n\n var clientIdObservers = this._clientIdObservers.get(clientId);\n\n if (!clientIdObservers) {\n return;\n }\n\n clientIdObservers.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode); // removing observers for disconnected clientId\n\n _this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n observerForTopic.delete(observer);\n\n if (observerForTopic.size === 0) {\n topicsToDelete_1.push(observerTopic);\n }\n });\n }); // forgiving any trace of clientId\n\n this._clientIdObservers.delete(clientId); // Removing topics that are not listen by an observer\n\n\n topicsToDelete_1.forEach(function (topic) {\n _this._topicObservers.delete(topic);\n });\n }\n };\n\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url,\n clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n client = new Paho.Client(url, clientId); // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName,\n msg = _a.payloadString;\n\n _this._onMessage(topic, msg);\n };\n\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode,\n args = __rest(_a, [\"errorCode\"]);\n\n _this.onDisconnect(__assign({\n clientId: clientId,\n errorCode: errorCode\n }, args));\n };\n\n return [4\n /*yield*/\n , new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function onSuccess() {\n return resolve(client);\n },\n onFailure: reject\n });\n })];\n\n case 1:\n _b.sent();\n\n return [2\n /*return*/\n , client];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) {\n options = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), {\n clientId: clientId\n }));\n })];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function () {\n return null;\n })];\n\n case 1:\n client = _a.sent();\n\n if (client && client.isConnected()) {\n client.disconnect();\n }\n\n this.clientsQueue.remove(clientId);\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.publish = function (topics, msg) {\n return __awaiter(this, void 0, void 0, function () {\n var targetTopics, message, url, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n targetTopics = [].concat(topics);\n message = JSON.stringify(msg);\n return [4\n /*yield*/\n , this.endpoint];\n\n case 1:\n url = _a.sent();\n return [4\n /*yield*/\n , this.connect(this.clientId, {\n url: url\n })];\n\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) {\n return client.send(topic, message);\n });\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n\n var parsedMessage_1 = JSON.parse(msg);\n\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) {\n return observer.next(parsedMessage_1);\n });\n });\n } catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n return new Observable(function (observer) {\n targetTopics.forEach(function (topic) {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n var observersForTopic = _this._topicObservers.get(topic);\n\n if (!observersForTopic) {\n observersForTopic = new Set();\n\n _this._topicObservers.set(topic, observersForTopic);\n }\n\n observersForTopic.add(observer);\n }); // @ts-ignore\n\n var client;\n var _a = options.clientId,\n clientId = _a === void 0 ? _this.clientId : _a; // this._clientIdObservers is used to close observers when client gets disconnected\n\n var observersForClientId = _this._clientIdObservers.get(clientId);\n\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n\n observersForClientId.add(observer);\n\n _this._clientIdObservers.set(clientId, observersForClientId);\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.endpoint];\n\n case 1:\n _b = _c.sent();\n return [3\n /*break*/\n , 3];\n\n case 2:\n _b = _a;\n _c.label = 3;\n\n case 3:\n url = _b;\n _c.label = 4;\n\n case 4:\n _c.trys.push([4, 6,, 7]);\n\n return [4\n /*yield*/\n , this.connect(clientId, {\n url: url\n })];\n\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3\n /*break*/\n , 7];\n\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3\n /*break*/\n , 7];\n\n case 7:\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n\n if (client) {\n _this._clientIdObservers.get(clientId).delete(observer); // No more observers per client => client not needed anymore\n\n\n if (_this._clientIdObservers.get(clientId).size === 0) {\n _this.disconnect(clientId);\n\n _this._clientIdObservers.delete(clientId);\n }\n\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic) || new Set();\n observersForTopic.delete(observer); // if no observers exists for the topic, topic should be removed\n\n if (observersForTopic.size === 0) {\n _this._topicObservers.delete(topic);\n\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n\n return null;\n };\n });\n };\n\n return MqttOverWSProvider;\n}(AbstractPubSubProvider);\n\nexport { MqttOverWSProvider };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify } from './Amplify';\nimport { Platform } from './Platform';\nexport { AmplifyClass } from './Amplify';\nexport { ClientDevice } from './ClientDevice';\nexport { ConsoleLogger, ConsoleLogger as Logger } from './Logger';\nexport * from './Errors';\nexport { Hub } from './Hub';\nexport { I18n } from './I18n';\nexport * from './JS';\nexport { Signer } from './Signer';\nexport * from './Parser';\nexport * from './Providers';\nexport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nexport * from './RNComponents';\nexport { Credentials, CredentialsClass } from './Credentials';\nexport { ServiceWorker } from './ServiceWorker';\nexport { StorageHelper, MemoryStorage } from './StorageHelper';\nexport { UniversalStorage } from './UniversalStorage';\nexport { Platform, getAmplifyUserAgent } from './Platform';\nexport * from './constants';\nexport var Constants = {\n userAgent: Platform.userAgent\n};\nexport * from './constants';\nexport * from './Util';\nexport { Amplify };\n/**\n * @deprecated use named import\n */\n\nexport default Amplify;","/*\n * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\nexport var INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol ? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol ? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';","import zenObservable from 'zen-observable';\nvar Observable = zenObservable;\nexport default Observable;\nexport { Observable };","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\n\nvar AbstractPubSubProvider =\n/** @class */\nfunction () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) {\n options = {};\n }\n\n this._config = options;\n }\n\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) {\n config = {};\n }\n\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function get() {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}();\n\nexport { AbstractPubSubProvider };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport Observable from 'zen-observable-ts';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\nvar logger = new Logger('AWSAppSyncProvider');\n\nvar AWSAppSyncProvider =\n/** @class */\nfunction (_super) {\n __extends(AWSAppSyncProvider, _super);\n\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function get() {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\n };\n\n AWSAppSyncProvider.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n\n AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n\n var topicsForClient = Array.from(this._topicClient.entries()).filter(function (_a) {\n var _b = __read(_a, 2),\n c = _b[1];\n\n return c.clientId === clientId;\n }).map(function (_a) {\n var _b = __read(_a, 1),\n t = _b[0];\n\n return t;\n });\n topicsForClient.forEach(function (t) {\n return _this._cleanUpForTopic(t);\n });\n };\n\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient.delete(topic);\n\n this._topicAlias.delete(topic);\n };\n\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n\n var clientId = _a.clientId,\n errorCode = _a.errorCode,\n args = __rest(_a, [\"clientId\", \"errorCode\"]);\n\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries()).filter(function (_a) {\n var _b = __read(_a, 2),\n c = _b[1];\n\n return c.clientId === clientId;\n }).map(function (_a) {\n var _b = __read(_a, 1),\n t = _b[0];\n\n return t;\n });\n topicsForClient.forEach(function (topic) {\n if (_this._topicObservers.has(topic)) {\n _this._topicObservers.get(topic).forEach(function (obs) {\n if (!obs.closed) {\n obs.error(args);\n }\n });\n\n _this._topicObservers.delete(topic);\n }\n });\n\n this._cleanUp(clientId);\n }\n };\n\n AWSAppSyncProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function () {\n return null;\n })];\n\n case 1:\n client = _a.sent();\n return [4\n /*yield*/\n , _super.prototype.disconnect.call(this, clientId)];\n\n case 2:\n _a.sent();\n\n this._cleanUp(clientId);\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // Add these topics to map\n targetTopics.forEach(function (t) {\n if (!_this._topicObservers.has(t)) {\n _this._topicObservers.set(t, new Set());\n }\n\n _this._topicObservers.get(t).add(observer);\n });\n _a = options.mqttConnections, mqttConnections = _a === void 0 ? [] : _a, newSubscriptions = options.newSubscriptions;\n newAliases = Object.entries(newSubscriptions).map(function (_a) {\n var _b = __read(_a, 2),\n alias = _b[0],\n v = _b[1];\n\n return [v.topic, alias];\n }); // Merge new aliases with old ones\n\n this._topicAlias = new Map(__spread(Array.from(this._topicAlias.entries()), newAliases));\n map = Object.entries(targetTopics.reduce(function (acc, elem) {\n var connectionInfoForTopic = mqttConnections.find(function (c) {\n return c.topics.indexOf(elem) > -1;\n });\n\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client,\n url = connectionInfoForTopic.url;\n\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set()\n };\n }\n\n acc[clientId].topics.add(elem);\n }\n\n return acc;\n }, {})); // reconnect everything we have in the map\n\n return [4\n /*yield*/\n , Promise.all(map.map(function (_a) {\n var _b = __read(_a, 2),\n clientId = _b[0],\n _c = _b[1],\n url = _c.url,\n topics = _c.topics;\n\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n\n var _this = this;\n\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n client = null;\n _d.label = 1;\n\n case 1:\n _d.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.connect(clientId, {\n clientId: clientId,\n url: url\n })];\n\n case 2:\n client = _d.sent();\n return [3\n /*break*/\n , 4];\n\n case 3:\n err_1 = _d.sent();\n observer.error({\n message: 'Failed to connect',\n error: err_1\n });\n observer.complete();\n return [2\n /*return*/\n , undefined];\n\n case 4:\n // subscribe to all topics for this client\n // store topic-client mapping\n topics.forEach(function (topic) {\n if (client.isConnected()) {\n client.subscribe(topic);\n\n _this._topicClient.set(topic, client);\n }\n });\n return [2\n /*return*/\n , client];\n }\n });\n });\n }))];\n\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n targetTopics.forEach(function (t) {\n var client = _this._topicClient.get(t);\n\n if (client && client.isConnected()) {\n client.unsubscribe(t);\n\n _this._topicClient.delete(t);\n\n if (!Array.from(_this._topicClient.values()).some(function (c) {\n return c === client;\n })) {\n _this.disconnect(client.clientId);\n }\n }\n\n _this._topicObservers.delete(t);\n });\n };\n });\n return Observable.from(result).map(function (value) {\n var topic = _this.getTopicForValue(value);\n\n var alias = _this._topicAlias.get(topic);\n\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var _b = __read(_a, 2),\n origKey = _b[0],\n val = _b[1];\n\n return obj[alias || origKey] = val, obj;\n }, {});\n return value;\n });\n };\n\n return AWSAppSyncProvider;\n}(MqttOverWSProvider);\n\nexport { AWSAppSyncProvider };","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { getLocation } from '../language/location';\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport Observable from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { Logger, Credentials, Signer, Hub, Constants, USER_AGENT_HEADER, jitteredExponentialRetry, NonRetryableError } from '@aws-amplify/core';\nimport Cache from '@aws-amplify/cache';\nimport Auth from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { CONTROL_MSG } from '../index';\nvar logger = new Logger('AWSAppSyncRealTimeProvider');\nvar AMPLIFY_SYMBOL = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function' ? Symbol.for('amplify_default') : '@@amplify_default';\n\nvar dispatchApiEvent = function dispatchApiEvent(event, data, message) {\n Hub.dispatch('api', {\n event: event,\n data: data,\n message: message\n }, 'PubSub', AMPLIFY_SYMBOL);\n};\n\nvar MAX_DELAY_MS = 5000;\nvar NON_RETRYABLE_CODES = [400, 401, 403];\nvar MESSAGE_TYPES;\n\n(function (MESSAGE_TYPES) {\n /**\n * Client -> Server message.\n * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_INIT\"] = \"connection_init\";\n /**\n * Server -> Client message\n * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_ERROR\"] = \"connection_error\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_ACK\"] = \"connection_ack\";\n /**\n * Client -> Server message.\n * This message type is for register subscriptions with AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_START\"] = \"start\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n */\n\n MESSAGE_TYPES[\"GQL_START_ACK\"] = \"start_ack\";\n /**\n * Server -> Client message.\n * This message type is for subscription message from AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_DATA\"] = \"data\";\n /**\n * Server -> Client message.\n * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_KEEP_ALIVE\"] = \"ka\";\n /**\n * Client -> Server message.\n * This message type is for unregister subscriptions with AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_STOP\"] = \"stop\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n */\n\n MESSAGE_TYPES[\"GQL_COMPLETE\"] = \"complete\";\n /**\n * Server -> Client message.\n * This message type is for sending error messages from AWS AppSync RealTime to the client\n */\n\n MESSAGE_TYPES[\"GQL_ERROR\"] = \"error\";\n})(MESSAGE_TYPES || (MESSAGE_TYPES = {}));\n\nvar SUBSCRIPTION_STATUS;\n\n(function (SUBSCRIPTION_STATUS) {\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"PENDING\"] = 0] = \"PENDING\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"CONNECTED\"] = 1] = \"CONNECTED\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"FAILED\"] = 2] = \"FAILED\";\n})(SUBSCRIPTION_STATUS || (SUBSCRIPTION_STATUS = {}));\n\nvar SOCKET_STATUS;\n\n(function (SOCKET_STATUS) {\n SOCKET_STATUS[SOCKET_STATUS[\"CLOSED\"] = 0] = \"CLOSED\";\n SOCKET_STATUS[SOCKET_STATUS[\"READY\"] = 1] = \"READY\";\n SOCKET_STATUS[SOCKET_STATUS[\"CONNECTING\"] = 2] = \"CONNECTING\";\n})(SOCKET_STATUS || (SOCKET_STATUS = {}));\n\nvar AWS_APPSYNC_REALTIME_HEADERS = {\n accept: 'application/json, text/javascript',\n 'content-encoding': 'amz-1.0',\n 'content-type': 'application/json; charset=UTF-8'\n};\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\n\nvar CONNECTION_INIT_TIMEOUT = 15000;\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\n\nvar START_ACK_TIMEOUT = 15000;\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\n\nvar DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n\nvar AWSAppSyncRealTimeProvider =\n/** @class */\nfunction (_super) {\n __extends(AWSAppSyncRealTimeProvider, _super);\n\n function AWSAppSyncRealTimeProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.socketStatus = SOCKET_STATUS.CLOSED;\n _this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n _this.subscriptionObserverMap = new Map();\n _this.promiseArray = [];\n return _this;\n }\n\n AWSAppSyncRealTimeProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncRealTimeProvider';\n };\n\n AWSAppSyncRealTimeProvider.prototype.newClient = function () {\n throw new Error('Not used here');\n };\n\n AWSAppSyncRealTimeProvider.prototype.publish = function (_topics, _msg, _options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype.subscribe = function (_topics, options) {\n var _this = this;\n\n var appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint;\n return new Observable(function (observer) {\n if (!appSyncGraphqlEndpoint) {\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Subscribe only available for AWS AppSync endpoint\"))]\n });\n observer.complete();\n } else {\n var subscriptionId_1 = uuid();\n\n _this._startSubscriptionWithAWSAppSyncRealTime({\n options: options,\n observer: observer,\n subscriptionId: subscriptionId_1\n }).catch(function (err) {\n observer.error({\n errors: [__assign({}, new GraphQLError(CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR + \": \" + err))]\n });\n observer.complete();\n });\n\n return function () {\n return __awaiter(_this, void 0, void 0, function () {\n var subscriptionState, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, 3, 4]); // Waiting that subscription has been connected before trying to unsubscribe\n\n\n return [4\n /*yield*/\n , this._waitForSubscriptionToBeConnected(subscriptionId_1)];\n\n case 1:\n // Waiting that subscription has been connected before trying to unsubscribe\n _a.sent();\n\n subscriptionState = (this.subscriptionObserverMap.get(subscriptionId_1) || {}).subscriptionState;\n\n if (!subscriptionState) {\n // subscription already unsubscribed\n return [2\n /*return*/\n ];\n }\n\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId_1);\n } else {\n throw new Error('Subscription never connected');\n }\n\n return [3\n /*break*/\n , 4];\n\n case 2:\n err_1 = _a.sent();\n logger.debug(\"Error while unsubscribing \" + err_1);\n return [3\n /*break*/\n , 4];\n\n case 3:\n this._removeSubscriptionObserver(subscriptionId_1);\n\n return [7\n /*endfinally*/\n ];\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n }\n });\n };\n\n Object.defineProperty(AWSAppSyncRealTimeProvider.prototype, \"isSSLEnabled\", {\n get: function get() {\n return !this.options.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n\n AWSAppSyncRealTimeProvider.prototype._startSubscriptionWithAWSAppSyncRealTime = function (_a) {\n var options = _a.options,\n observer = _a.observer,\n subscriptionId = _a.subscriptionId;\n return __awaiter(this, void 0, void 0, function () {\n var appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, _b, graphql_headers, _c, additionalHeaders, subscriptionState, data, dataString, headerObj, _d, _e, subscriptionMessage, stringToAWSRealTime, err_2, _f, message, subscriptionFailedCallback_1, _g, subscriptionFailedCallback, subscriptionReadyCallback;\n\n var _h;\n\n var _this = this;\n\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint, authenticationType = options.authenticationType, query = options.query, variables = options.variables, apiKey = options.apiKey, region = options.region, _b = options.graphql_headers, graphql_headers = _b === void 0 ? function () {\n return {};\n } : _b, _c = options.additionalHeaders, additionalHeaders = _c === void 0 ? {} : _c;\n subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n data = {\n query: query,\n variables: variables\n }; // Having a subscription id map will make it simple to forward messages received\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: subscriptionState,\n startAckTimeoutId: null\n });\n dataString = JSON.stringify(data);\n _d = [{}];\n return [4\n /*yield*/\n , this._awsRealTimeHeaderBasedAuth({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n payload: dataString,\n canonicalUri: '',\n region: region,\n additionalHeaders: additionalHeaders\n })];\n\n case 1:\n _e = [__assign.apply(void 0, _d.concat([_j.sent()]))];\n return [4\n /*yield*/\n , graphql_headers()];\n\n case 2:\n headerObj = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _e.concat([_j.sent()])), additionalHeaders]), (_h = {}, _h[USER_AGENT_HEADER] = Constants.userAgent, _h)]);\n subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: __assign({}, headerObj)\n }\n },\n type: MESSAGE_TYPES.GQL_START\n };\n stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n _j.label = 3;\n\n case 3:\n _j.trys.push([3, 5,, 6]);\n\n return [4\n /*yield*/\n , this._initializeWebSocketConnection({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n region: region,\n additionalHeaders: additionalHeaders\n })];\n\n case 4:\n _j.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_2 = _j.sent();\n logger.debug({\n err: err_2\n });\n _f = err_2.message, message = _f === void 0 ? '' : _f;\n observer.error({\n errors: [__assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + message))]\n });\n observer.complete();\n subscriptionFailedCallback_1 = (this.subscriptionObserverMap.get(subscriptionId) || {}).subscriptionFailedCallback; // Notify concurrent unsubscription\n\n if (typeof subscriptionFailedCallback_1 === 'function') {\n subscriptionFailedCallback_1();\n }\n\n return [2\n /*return*/\n ];\n\n case 6:\n _g = this.subscriptionObserverMap.get(subscriptionId), subscriptionFailedCallback = _g.subscriptionFailedCallback, subscriptionReadyCallback = _g.subscriptionReadyCallback; // This must be done before sending the message in order to be listening immediately\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(function () {\n _this._timeoutStartSubscriptionAck.call(_this, subscriptionId);\n }, START_ACK_TIMEOUT)\n });\n\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n }; // Waiting that subscription has been connected before trying to unsubscribe\n\n\n AWSAppSyncRealTimeProvider.prototype._waitForSubscriptionToBeConnected = function (subscriptionId) {\n return __awaiter(this, void 0, void 0, function () {\n var subscriptionState;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n subscriptionState = this.subscriptionObserverMap.get(subscriptionId).subscriptionState; // This in case unsubscribe is invoked before sending start subscription message\n\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return [2\n /*return*/\n , new Promise(function (res, rej) {\n var _a = _this.subscriptionObserverMap.get(subscriptionId),\n observer = _a.observer,\n subscriptionState = _a.subscriptionState,\n variables = _a.variables,\n query = _a.query;\n\n _this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej\n });\n })];\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._sendUnsubscriptionMessage = function (subscriptionId) {\n try {\n if (this.awsRealTimeSocket && this.awsRealTimeSocket.readyState === WebSocket.OPEN && this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n var unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP\n };\n var stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n } catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({\n err: err\n });\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._removeSubscriptionObserver = function (subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId); // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n };\n\n AWSAppSyncRealTimeProvider.prototype._closeSocketIfRequired = function () {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n } else {\n logger.debug('closing WebSocket...');\n clearTimeout(this.keepAliveTimeoutId);\n var tempSocket = this.awsRealTimeSocket; // Cleaning callbacks to avoid race condition, socket still exists\n\n tempSocket.onclose = undefined;\n tempSocket.onerror = undefined;\n tempSocket.close(1000);\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._handleIncomingSubscriptionMessage = function (message) {\n logger.debug(\"subscription message from AWS AppSync RealTime: \" + message.data);\n\n var _a = JSON.parse(message.data),\n _b = _a.id,\n id = _b === void 0 ? '' : _b,\n payload = _a.payload,\n type = _a.type;\n\n var _c = this.subscriptionObserverMap.get(id) || {},\n _d = _c.observer,\n observer = _d === void 0 ? null : _d,\n _e = _c.query,\n query = _e === void 0 ? '' : _e,\n _f = _c.variables,\n variables = _f === void 0 ? {} : _f,\n startAckTimeoutId = _c.startAckTimeoutId,\n subscriptionReadyCallback = _c.subscriptionReadyCallback,\n subscriptionFailedCallback = _c.subscriptionFailedCallback;\n\n logger.debug({\n id: id,\n observer: observer,\n query: query,\n variables: variables\n });\n\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n } else {\n logger.debug(\"observer not found for id: \" + id);\n }\n\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(\"subscription ready for \" + JSON.stringify({\n query: query,\n variables: variables\n }));\n\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent(CONTROL_MSG.SUBSCRIPTION_ACK, {\n query: query,\n variables: variables\n }, 'Connection established for subscription');\n var subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: null,\n subscriptionState: subscriptionState,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback\n }); // TODO: emit event on hub but it requires to store the id first\n\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n clearTimeout(this.keepAliveTimeoutId);\n this.keepAliveTimeoutId = setTimeout(this._errorDisconnect.bind(this, CONTROL_MSG.TIMEOUT_DISCONNECT), this.keepAliveTimeout);\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n var subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: startAckTimeoutId,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n subscriptionState: subscriptionState\n });\n observer.error({\n errors: [__assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + JSON.stringify(payload)))]\n });\n clearTimeout(startAckTimeoutId);\n observer.complete();\n\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._errorDisconnect = function (msg) {\n logger.debug(\"Disconnect error: \" + msg);\n this.subscriptionObserverMap.forEach(function (_a) {\n var observer = _a.observer;\n\n if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(msg))]\n });\n }\n });\n this.subscriptionObserverMap.clear();\n\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.close();\n }\n\n this.socketStatus = SOCKET_STATUS.CLOSED;\n };\n\n AWSAppSyncRealTimeProvider.prototype._timeoutStartSubscriptionAck = function (subscriptionId) {\n var _a = this.subscriptionObserverMap.get(subscriptionId) || {},\n observer = _a.observer,\n query = _a.query,\n variables = _a.variables;\n\n if (!observer) {\n return;\n }\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED\n });\n\n if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Subscription timeout \" + JSON.stringify({\n query: query,\n variables: variables\n })))]\n }); // Cleanup will be automatically executed\n\n observer.complete();\n }\n\n logger.debug('timeoutStartSubscription', JSON.stringify({\n query: query,\n variables: variables\n }));\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeWebSocketConnection = function (_a) {\n var _this = this;\n\n var appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n authenticationType = _a.authenticationType,\n apiKey = _a.apiKey,\n region = _a.region,\n additionalHeaders = _a.additionalHeaders;\n\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n\n return new Promise(function (res, rej) {\n return __awaiter(_this, void 0, void 0, function () {\n var protocol, discoverableEndpoint, payloadString, headerString, _a, _b, headerQs, payloadQs, awsRealTimeUrl, err_3;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.promiseArray.push({\n res: res,\n rej: rej\n });\n if (!(this.socketStatus === SOCKET_STATUS.CLOSED)) return [3\n /*break*/\n , 5];\n _c.label = 1;\n\n case 1:\n _c.trys.push([1, 4,, 5]);\n\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n discoverableEndpoint = appSyncGraphqlEndpoint.replace('https://', protocol).replace('http://', protocol).replace('appsync-api', 'appsync-realtime-api').replace('gogi-beta', 'grt-beta');\n payloadString = '{}';\n _b = (_a = JSON).stringify;\n return [4\n /*yield*/\n , this._awsRealTimeHeaderBasedAuth({\n authenticationType: authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n region: region,\n additionalHeaders: additionalHeaders\n })];\n\n case 2:\n headerString = _b.apply(_a, [_c.sent()]);\n headerQs = Buffer.from(headerString).toString('base64');\n payloadQs = Buffer.from(payloadString).toString('base64');\n awsRealTimeUrl = discoverableEndpoint + \"?header=\" + headerQs + \"&payload=\" + payloadQs;\n return [4\n /*yield*/\n , this._initializeRetryableHandshake({\n awsRealTimeUrl: awsRealTimeUrl\n })];\n\n case 3:\n _c.sent();\n\n this.promiseArray.forEach(function (_a) {\n var res = _a.res;\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n return [3\n /*break*/\n , 5];\n\n case 4:\n err_3 = _c.sent();\n this.promiseArray.forEach(function (_a) {\n var rej = _a.rej;\n return rej(err_3);\n });\n this.promiseArray = [];\n\n if (this.awsRealTimeSocket && this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return [3\n /*break*/\n , 5];\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeRetryableHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializaling retryable Handshake\");\n return [4\n /*yield*/\n , jitteredExponentialRetry(this._initializeHandshake.bind(this), [{\n awsRealTimeUrl: awsRealTimeUrl\n }], MAX_DELAY_MS)];\n\n case 1:\n _b.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n var err_4, errorType, errorCode;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializing handshake \" + awsRealTimeUrl);\n _b.label = 1;\n\n case 1:\n _b.trys.push([1, 4,, 5]);\n\n return [4\n /*yield*/\n , function () {\n return new Promise(function (res, rej) {\n var newSocket = new WebSocket(awsRealTimeUrl, 'graphql-ws');\n\n newSocket.onerror = function () {\n logger.debug(\"WebSocket connection error\");\n };\n\n newSocket.onclose = function () {\n rej(new Error('Connection handshake error'));\n };\n\n newSocket.onopen = function () {\n _this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n }()];\n\n case 2:\n _b.sent(); // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n\n\n return [4\n /*yield*/\n , function () {\n return new Promise(function (res, rej) {\n var ackOk = false;\n\n _this.awsRealTimeSocket.onerror = function (error) {\n logger.debug(\"WebSocket error \" + JSON.stringify(error));\n };\n\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n rej(new Error(JSON.stringify(event)));\n };\n\n _this.awsRealTimeSocket.onmessage = function (message) {\n logger.debug(\"subscription message from AWS AppSyncRealTime: \" + message.data + \" \");\n var data = JSON.parse(message.data);\n var type = data.type,\n _a = data.payload,\n _b = (_a === void 0 ? {} : _a).connectionTimeoutMs,\n connectionTimeoutMs = _b === void 0 ? DEFAULT_KEEP_ALIVE_TIMEOUT : _b;\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk = true;\n _this.keepAliveTimeout = connectionTimeoutMs;\n _this.awsRealTimeSocket.onmessage = _this._handleIncomingSubscriptionMessage.bind(_this);\n\n _this.awsRealTimeSocket.onerror = function (err) {\n logger.debug(err);\n\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n var _c = data.payload,\n _d = (_c === void 0 ? {} : _c).errors,\n _e = __read(_d === void 0 ? [] : _d, 1),\n _f = _e[0],\n _g = _f === void 0 ? {} : _f,\n _h = _g.errorType,\n errorType = _h === void 0 ? '' : _h,\n _j = _g.errorCode,\n errorCode = _j === void 0 ? 0 : _j;\n\n rej({\n errorType: errorType,\n errorCode: errorCode\n });\n }\n };\n\n var gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT\n };\n\n _this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n\n function checkAckOk() {\n if (!ackOk) {\n rej(new Error(\"Connection timeout: ack from AWSRealTime was not received on \" + CONNECTION_INIT_TIMEOUT + \" ms\"));\n }\n }\n\n setTimeout(checkAckOk.bind(_this), CONNECTION_INIT_TIMEOUT);\n });\n }()];\n\n case 3:\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n _b.sent();\n\n return [3\n /*break*/\n , 5];\n\n case 4:\n err_4 = _b.sent();\n errorType = err_4.errorType, errorCode = err_4.errorCode;\n\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n } else if (errorType) {\n throw new Error(errorType);\n } else {\n throw err_4;\n }\n\n return [3\n /*break*/\n , 5];\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeHeaderBasedAuth = function (_a) {\n var authenticationType = _a.authenticationType,\n payload = _a.payload,\n canonicalUri = _a.canonicalUri,\n appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n apiKey = _a.apiKey,\n region = _a.region,\n additionalHeaders = _a.additionalHeaders;\n return __awaiter(this, void 0, void 0, function () {\n var headerHandler, handler, host, result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n headerHandler = {\n API_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n AWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n OPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n AMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this),\n AWS_LAMBDA: this._customAuthHeader\n };\n handler = headerHandler[authenticationType];\n\n if (typeof handler !== 'function') {\n logger.debug(\"Authentication type \" + authenticationType + \" not supported\");\n return [2\n /*return*/\n , ''];\n }\n\n host = url.parse(appSyncGraphqlEndpoint).host;\n return [4\n /*yield*/\n , handler({\n payload: payload,\n canonicalUri: canonicalUri,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n apiKey: apiKey,\n region: region,\n host: host,\n additionalHeaders: additionalHeaders\n })];\n\n case 1:\n result = _b.sent();\n return [2\n /*return*/\n , result];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeCUPHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var session;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , Auth.currentSession()];\n\n case 1:\n session = _b.sent();\n return [2\n /*return*/\n , {\n Authorization: session.getAccessToken().getJwtToken(),\n host: host\n }];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeOPENIDHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var token, federatedInfo, currentUser;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , Cache.getItem('federatedInfo')];\n\n case 1:\n federatedInfo = _b.sent();\n if (!federatedInfo) return [3\n /*break*/\n , 2];\n token = federatedInfo.token;\n return [3\n /*break*/\n , 4];\n\n case 2:\n return [4\n /*yield*/\n , Auth.currentAuthenticatedUser()];\n\n case 3:\n currentUser = _b.sent();\n\n if (currentUser) {\n token = currentUser.token;\n }\n\n _b.label = 4;\n\n case 4:\n if (!token) {\n throw new Error('No federated jwt');\n }\n\n return [2\n /*return*/\n , {\n Authorization: token,\n host: host\n }];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeApiKeyHeader = function (_a) {\n var apiKey = _a.apiKey,\n host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var dt, dtStr;\n return __generator(this, function (_b) {\n dt = new Date();\n dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return [2\n /*return*/\n , {\n host: host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey\n }];\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeIAMHeader = function (_a) {\n var payload = _a.payload,\n canonicalUri = _a.canonicalUri,\n appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var endpointInfo, credentialsOK, creds, request, signed_params;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpointInfo = {\n region: region,\n service: 'appsync'\n };\n return [4\n /*yield*/\n , this._ensureCredentials()];\n\n case 1:\n credentialsOK = _b.sent();\n\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n\n return [4\n /*yield*/\n , Credentials.get().then(function (credentials) {\n return {\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken\n };\n })];\n\n case 2:\n creds = _b.sent();\n request = {\n url: \"\" + appSyncGraphqlEndpoint + canonicalUri,\n data: payload,\n method: 'POST',\n headers: __assign({}, AWS_APPSYNC_REALTIME_HEADERS)\n };\n signed_params = Signer.sign(request, creds, endpointInfo);\n return [2\n /*return*/\n , signed_params.headers];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._customAuthHeader = function (_a) {\n var host = _a.host,\n additionalHeaders = _a.additionalHeaders;\n\n if (!additionalHeaders.Authorization) {\n throw new Error('No auth token specified');\n }\n\n return {\n Authorization: additionalHeaders.Authorization,\n host: host\n };\n };\n /**\n * @private\n */\n\n\n AWSAppSyncRealTimeProvider.prototype._ensureCredentials = function () {\n return Credentials.get().then(function (credentials) {\n if (!credentials) return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n return true;\n }).catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n\n return AWSAppSyncRealTimeProvider;\n}(AbstractPubSubProvider);\n\nexport { AWSAppSyncRealTimeProvider };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Auth } from './Auth';\nimport { CognitoHostedUIIdentityProvider } from './types/Auth';\nimport { CognitoUser, CookieStorage, appendToCognitoUserAgent } from 'amazon-cognito-identity-js';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n/**\n * @deprecated use named import\n */\n\nexport default Auth;\nexport { Auth, CognitoUser, CookieStorage, CognitoHostedUIIdentityProvider, appendToCognitoUserAgent, AuthErrorStrings };","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { PubSub } from './PubSub';\nexport * from './Providers';\nvar CONTROL_MSG;\n\n(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTION_CLOSED\"] = \"Connection closed\";\n CONTROL_MSG[\"CONNECTION_FAILED\"] = \"Connection failed\";\n CONTROL_MSG[\"REALTIME_SUBSCRIPTION_INIT_ERROR\"] = \"AppSync Realtime subscription init error\";\n CONTROL_MSG[\"SUBSCRIPTION_ACK\"] = \"Subscription ack\";\n CONTROL_MSG[\"TIMEOUT_DISCONNECT\"] = \"Timeout disconnect\";\n})(CONTROL_MSG || (CONTROL_MSG = {}));\n\nexport { PubSub, CONTROL_MSG };\n/**\n * @deprecated use named import\n */\n\nexport default PubSub;","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n// import '../Common/Polyfills';\n\n\nimport Observable from 'zen-observable-ts';\nimport { Amplify, browserOrNode, ConsoleLogger as Logger, INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER } from '@aws-amplify/core';\nimport { AWSAppSyncProvider, AWSAppSyncRealTimeProvider } from './Providers';\nvar isNode = browserOrNode().isNode;\nvar logger = new Logger('PubSub');\n\nvar PubSubClass =\n/** @class */\nfunction () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {PubSubOptions} options - Configuration object for PubSub\n */\n function PubSubClass(options) {\n this._options = options;\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n }\n\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n */\n get: function get() {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n }\n\n return this._awsAppSyncProvider;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncRealTimeProvider\", {\n /**\n * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n */\n get: function get() {\n if (!this._awsAppSyncRealTimeProvider) {\n this._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(this._options);\n }\n\n return this._awsAppSyncRealTimeProvider;\n },\n enumerable: true,\n configurable: true\n });\n\n PubSubClass.prototype.getModuleName = function () {\n return 'PubSub';\n };\n /**\n * Configure PubSub part with configurations\n *\n * @param {PubSubOptions} config - Configuration for PubSub\n * @return {Object} - The current configuration\n */\n\n\n PubSubClass.prototype.configure = function (options) {\n var _this = this;\n\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', {\n opt: opt\n });\n this._options = Object.assign({}, this._options, opt);\n\n this._pluggables.map(function (pluggable) {\n return pluggable.configure(_this._options);\n });\n\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\n */\n\n\n PubSubClass.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'PubSub') {\n this._pluggables.push(pluggable);\n\n config = pluggable.configure(this._options);\n return [2\n /*return*/\n , config];\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n /**\n * remove plugin from PubSub category\n * @param providerName - the name of the plugin\n */\n\n\n PubSubClass.prototype.removePluggable = function (providerName) {\n this._pluggables = this._pluggables.filter(function (pluggable) {\n return pluggable.getProviderName() !== providerName;\n });\n };\n\n PubSubClass.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n\n if (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n return this.awsAppSyncRealTimeProvider;\n }\n\n return this._pluggables.find(function (pluggable) {\n return pluggable.getProviderName() === providerName;\n });\n };\n\n PubSubClass.prototype.getProviders = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n var providerName = options.provider;\n\n if (!providerName) {\n return this._pluggables;\n }\n\n var provider = this.getProviderByName(providerName);\n\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n\n return [provider];\n };\n\n PubSubClass.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n\n PubSubClass.prototype.subscribe = function (topics, options) {\n if (isNode && this._options && this._options.ssr) {\n throw new Error('Subscriptions are not supported for Server-Side Rendering (SSR)');\n }\n\n logger.debug('subscribe options', options);\n var providers = this.getProviders(options);\n return new Observable(function (observer) {\n var observables = providers.map(function (provider) {\n return {\n provider: provider,\n observable: provider.subscribe(topics, options)\n };\n });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider,\n observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function next(value) {\n return observer.next({\n provider: provider,\n value: value\n });\n },\n error: function error(_error) {\n return observer.error({\n provider: provider,\n error: _error\n });\n }\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) {\n return subscription.unsubscribe();\n });\n };\n });\n };\n\n return PubSubClass;\n}();\n\nexport { PubSubClass };\nexport var PubSub = new PubSubClass(null);\nAmplify.register(PubSub);","export var GRAPHQL_AUTH_MODE;\n\n(function (GRAPHQL_AUTH_MODE) {\n GRAPHQL_AUTH_MODE[\"API_KEY\"] = \"API_KEY\";\n GRAPHQL_AUTH_MODE[\"AWS_IAM\"] = \"AWS_IAM\";\n GRAPHQL_AUTH_MODE[\"OPENID_CONNECT\"] = \"OPENID_CONNECT\";\n GRAPHQL_AUTH_MODE[\"AMAZON_COGNITO_USER_POOLS\"] = \"AMAZON_COGNITO_USER_POOLS\";\n GRAPHQL_AUTH_MODE[\"AWS_LAMBDA\"] = \"AWS_LAMBDA\";\n})(GRAPHQL_AUTH_MODE || (GRAPHQL_AUTH_MODE = {}));\n\nexport var GraphQLAuthError;\n\n(function (GraphQLAuthError) {\n GraphQLAuthError[\"NO_API_KEY\"] = \"No api-key configured\";\n GraphQLAuthError[\"NO_CURRENT_USER\"] = \"No current user\";\n GraphQLAuthError[\"NO_CREDENTIALS\"] = \"No credentials\";\n GraphQLAuthError[\"NO_FEDERATED_JWT\"] = \"No federated jwt\";\n GraphQLAuthError[\"NO_AUTH_TOKEN\"] = \"No auth token specified\";\n})(GraphQLAuthError || (GraphQLAuthError = {}));","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { GraphQLError } from 'graphql/error/GraphQLError';\nimport { print } from 'graphql/language/printer';\nimport { parse } from 'graphql/language/parser';\nimport { Amplify, ConsoleLogger as Logger, Constants, Credentials, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER } from '@aws-amplify/core';\nimport PubSub from '@aws-amplify/pubsub';\nimport Auth from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { GraphQLAuthError } from './types';\nimport { RestClient } from '@aws-amplify/api-rest';\nvar USER_AGENT_HEADER = 'x-amz-user-agent';\nvar logger = new Logger('GraphQLAPI');\nexport var graphqlOperation = function graphqlOperation(query, variables, authToken) {\n if (variables === void 0) {\n variables = {};\n }\n\n return {\n query: query,\n variables: variables,\n authToken: authToken\n };\n};\n/**\n * Export Cloud Logic APIs\n */\n\nvar GraphQLAPIClass =\n/** @class */\nfunction () {\n /**\n * Initialize GraphQL API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function GraphQLAPIClass(options) {\n this._api = null;\n this.Auth = Auth;\n this.Cache = Cache;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\n }\n\n GraphQLAPIClass.prototype.getModuleName = function () {\n return 'GraphQLAPI';\n };\n /**\n * Configure API\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n GraphQLAPIClass.prototype.configure = function (options) {\n var _a = options || {},\n _b = _a.API,\n API = _b === void 0 ? {} : _b,\n otherOptions = __rest(_a, [\"API\"]);\n\n var opt = __assign(__assign({}, otherOptions), API);\n\n logger.debug('configure GraphQL API', {\n opt: opt\n });\n\n if (opt['aws_project_region']) {\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {}\n });\n }\n\n if (typeof opt.graphql_headers !== 'undefined' && typeof opt.graphql_headers !== 'function') {\n logger.warn('graphql_headers should be a function');\n opt.graphql_headers = undefined;\n }\n\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n\n\n GraphQLAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest instance');\n\n if (this._options) {\n this._api = new RestClient(this._options); // Share instance Credentials with client for SSR\n\n this._api.Credentials = this.Credentials;\n return true;\n } else {\n return Promise.reject('API not configured');\n }\n };\n\n GraphQLAPIClass.prototype._headerBasedAuth = function (defaultAuthenticationType, additionalHeaders) {\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _a, aws_appsync_authenticationType, apiKey, authenticationType, headers, _b, credentialsOK, token, federatedInfo, currentUser, e_1, session, e_2;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = this._options, aws_appsync_authenticationType = _a.aws_appsync_authenticationType, apiKey = _a.aws_appsync_apiKey;\n authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n headers = {};\n _b = authenticationType;\n\n switch (_b) {\n case 'API_KEY':\n return [3\n /*break*/\n , 1];\n\n case 'AWS_IAM':\n return [3\n /*break*/\n , 2];\n\n case 'OPENID_CONNECT':\n return [3\n /*break*/\n , 4];\n\n case 'AMAZON_COGNITO_USER_POOLS':\n return [3\n /*break*/\n , 11];\n\n case 'AWS_LAMBDA':\n return [3\n /*break*/\n , 15];\n }\n\n return [3\n /*break*/\n , 16];\n\n case 1:\n if (!apiKey) {\n throw new Error(GraphQLAuthError.NO_API_KEY);\n }\n\n headers = {\n Authorization: null,\n 'X-Api-Key': apiKey\n };\n return [3\n /*break*/\n , 17];\n\n case 2:\n return [4\n /*yield*/\n , this._ensureCredentials()];\n\n case 3:\n credentialsOK = _c.sent();\n\n if (!credentialsOK) {\n throw new Error(GraphQLAuthError.NO_CREDENTIALS);\n }\n\n return [3\n /*break*/\n , 17];\n\n case 4:\n _c.trys.push([4, 9,, 10]);\n\n token = void 0;\n return [4\n /*yield*/\n , Cache.getItem('federatedInfo')];\n\n case 5:\n federatedInfo = _c.sent();\n if (!federatedInfo) return [3\n /*break*/\n , 6];\n token = federatedInfo.token;\n return [3\n /*break*/\n , 8];\n\n case 6:\n return [4\n /*yield*/\n , Auth.currentAuthenticatedUser()];\n\n case 7:\n currentUser = _c.sent();\n\n if (currentUser) {\n token = currentUser.token;\n }\n\n _c.label = 8;\n\n case 8:\n if (!token) {\n throw new Error(GraphQLAuthError.NO_FEDERATED_JWT);\n }\n\n headers = {\n Authorization: token\n };\n return [3\n /*break*/\n , 10];\n\n case 9:\n e_1 = _c.sent();\n throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n\n case 10:\n return [3\n /*break*/\n , 17];\n\n case 11:\n _c.trys.push([11, 13,, 14]);\n\n return [4\n /*yield*/\n , this.Auth.currentSession()];\n\n case 12:\n session = _c.sent();\n headers = {\n Authorization: session.getAccessToken().getJwtToken()\n };\n return [3\n /*break*/\n , 14];\n\n case 13:\n e_2 = _c.sent();\n throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n\n case 14:\n return [3\n /*break*/\n , 17];\n\n case 15:\n if (!additionalHeaders.Authorization) {\n throw new Error(GraphQLAuthError.NO_AUTH_TOKEN);\n }\n\n headers = {\n Authorization: additionalHeaders.Authorization\n };\n return [3\n /*break*/\n , 17];\n\n case 16:\n headers = {\n Authorization: null\n };\n return [3\n /*break*/\n , 17];\n\n case 17:\n return [2\n /*return*/\n , headers];\n }\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n\n\n GraphQLAPIClass.prototype.getGraphqlOperationType = function (operation) {\n var doc = parse(operation);\n\n var _a = __read(doc.definitions, 1),\n operationType = _a[0].operation;\n\n return operationType;\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n\n\n GraphQLAPIClass.prototype.graphql = function (_a, additionalHeaders) {\n var paramQuery = _a.query,\n _b = _a.variables,\n variables = _b === void 0 ? {} : _b,\n authMode = _a.authMode,\n authToken = _a.authToken;\n var query = typeof paramQuery === 'string' ? parse(paramQuery) : parse(print(paramQuery));\n\n var _c = __read(query.definitions.filter(function (def) {\n return def.kind === 'OperationDefinition';\n }), 1),\n _d = _c[0],\n operationDef = _d === void 0 ? {} : _d;\n\n var operationType = operationDef.operation;\n var headers = additionalHeaders || {}; // if an authorization header is set, have the explicit authToken take precedence\n\n if (authToken) {\n headers.Authorization = authToken;\n }\n\n switch (operationType) {\n case 'query':\n case 'mutation':\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = {\n cancellableToken: cancellableToken\n };\n\n var responsePromise = this._graphql({\n query: query,\n variables: variables,\n authMode: authMode\n }, headers, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n\n case 'subscription':\n return this._graphqlSubscribe({\n query: query,\n variables: variables,\n authMode: authMode\n }, headers);\n }\n\n throw new Error(\"invalid operation type: \" + operationType);\n };\n\n GraphQLAPIClass.prototype._graphql = function (_a, additionalHeaders, initParams) {\n var query = _a.query,\n variables = _a.variables,\n authMode = _a.authMode;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n if (initParams === void 0) {\n initParams = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _b, region, appSyncGraphqlEndpoint, _c, graphql_headers, customGraphqlEndpoint, customEndpointRegion, headers, _d, _e, _f, _g, _h, _j, body, init, endpoint, error, response, err_1, errors;\n\n var _k;\n\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 1:\n _l.sent();\n\n _l.label = 2;\n\n case 2:\n _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () {\n return {};\n } : _c, customGraphqlEndpoint = _b.graphql_endpoint, customEndpointRegion = _b.graphql_endpoint_iam_region;\n _d = [{}];\n _e = !customGraphqlEndpoint;\n if (!_e) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , this._headerBasedAuth(authMode, additionalHeaders)];\n\n case 3:\n _e = _l.sent();\n _l.label = 4;\n\n case 4:\n _f = [__assign.apply(void 0, _d.concat([_e]))];\n _g = customGraphqlEndpoint;\n if (!_g) return [3\n /*break*/\n , 8];\n if (!customEndpointRegion) return [3\n /*break*/\n , 6];\n return [4\n /*yield*/\n , this._headerBasedAuth(authMode, additionalHeaders)];\n\n case 5:\n _h = _l.sent();\n return [3\n /*break*/\n , 7];\n\n case 6:\n _h = {\n Authorization: null\n };\n _l.label = 7;\n\n case 7:\n _g = _h;\n _l.label = 8;\n\n case 8:\n _j = [__assign.apply(void 0, _f.concat([_g]))];\n return [4\n /*yield*/\n , graphql_headers({\n query: query,\n variables: variables\n })];\n\n case 9:\n headers = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _j.concat([_l.sent()])), additionalHeaders]), !customGraphqlEndpoint && (_k = {}, _k[USER_AGENT_HEADER] = Constants.userAgent, _k)]);\n body = {\n query: print(query),\n variables: variables\n };\n init = Object.assign({\n headers: headers,\n body: body,\n signerServiceInfo: {\n service: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n region: !customGraphqlEndpoint ? region : customEndpointRegion\n }\n }, initParams);\n endpoint = customGraphqlEndpoint || appSyncGraphqlEndpoint;\n\n if (!endpoint) {\n error = new GraphQLError('No graphql endpoint provided.');\n throw {\n data: {},\n errors: [error]\n };\n }\n\n _l.label = 10;\n\n case 10:\n _l.trys.push([10, 12,, 13]);\n\n return [4\n /*yield*/\n , this._api.post(endpoint, init)];\n\n case 11:\n response = _l.sent();\n return [3\n /*break*/\n , 13];\n\n case 12:\n err_1 = _l.sent(); // If the exception is because user intentionally\n // cancelled the request, do not modify the exception\n // so that clients can identify the exception correctly.\n\n if (this._api.isCancel(err_1)) {\n throw err_1;\n }\n\n response = {\n data: {},\n errors: [new GraphQLError(err_1.message, null, null, null, null, err_1)]\n };\n return [3\n /*break*/\n , 13];\n\n case 13:\n errors = response.errors;\n\n if (errors && errors.length) {\n throw response;\n }\n\n return [2\n /*return*/\n , response];\n }\n });\n });\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n GraphQLAPIClass.prototype.isCancel = function (error) {\n return this._api.isCancel(error);\n };\n /**\n * Cancels an inflight request. Only applicable for graphql queries and mutations\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n GraphQLAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n\n GraphQLAPIClass.prototype._graphqlSubscribe = function (_a, additionalHeaders) {\n var query = _a.query,\n variables = _a.variables,\n defaultAuthenticationType = _a.authMode,\n authToken = _a.authToken;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n var _b = this._options,\n region = _b.aws_appsync_region,\n appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint,\n aws_appsync_authenticationType = _b.aws_appsync_authenticationType,\n apiKey = _b.aws_appsync_apiKey,\n _c = _b.graphql_headers,\n graphql_headers = _c === void 0 ? function () {\n return {};\n } : _c;\n var authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n\n if (PubSub && typeof PubSub.subscribe === 'function') {\n return PubSub.subscribe('', {\n provider: INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n apiKey: apiKey,\n query: print(query),\n region: region,\n variables: variables,\n graphql_headers: graphql_headers,\n additionalHeaders: additionalHeaders,\n authToken: authToken\n });\n } else {\n logger.debug('No pubsub module applied for subscription');\n throw new Error('No pubsub module applied for subscription');\n }\n };\n /**\n * @private\n */\n\n\n GraphQLAPIClass.prototype._ensureCredentials = function () {\n var _this = this;\n\n return this.Credentials.get().then(function (credentials) {\n if (!credentials) return false;\n\n var cred = _this.Credentials.shear(credentials);\n\n logger.debug('set credentials for api', cred);\n return true;\n }).catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n\n return GraphQLAPIClass;\n}();\n\nexport { GraphQLAPIClass };\nexport var GraphQLAPI = new GraphQLAPIClass(null);\nAmplify.register(GraphQLAPI);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { Auth } from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport { GraphQLAPIClass } from '@aws-amplify/api-graphql';\nimport { Amplify, ConsoleLogger as Logger, Credentials } from '@aws-amplify/core';\nvar logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\n\nvar APIClass =\n/** @class */\nfunction () {\n /**\n * Initialize API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function APIClass(options) {\n this.Auth = Auth;\n this.Cache = Cache;\n this.Credentials = Credentials;\n this._options = options;\n this._restApi = new RestAPIClass(options);\n this._graphqlApi = new GraphQLAPIClass(options);\n logger.debug('API Options', this._options);\n }\n\n APIClass.prototype.getModuleName = function () {\n return 'API';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n APIClass.prototype.configure = function (options) {\n this._options = Object.assign({}, this._options, options); // Share Amplify instance with client for SSR\n\n this._restApi.Credentials = this.Credentials;\n this._graphqlApi.Auth = this.Auth;\n this._graphqlApi.Cache = this.Cache;\n this._graphqlApi.Credentials = this.Credentials;\n\n var restAPIConfig = this._restApi.configure(this._options);\n\n var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n\n return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\n };\n /**\n * Make a GET request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.get = function (apiName, path, init) {\n return this._restApi.get(apiName, path, init);\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.post = function (apiName, path, init) {\n return this._restApi.post(apiName, path, init);\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.put = function (apiName, path, init) {\n return this._restApi.put(apiName, path, init);\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.patch = function (apiName, path, init) {\n return this._restApi.patch(apiName, path, init);\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.del = function (apiName, path, init) {\n return this._restApi.del(apiName, path, init);\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.head = function (apiName, path, init) {\n return this._restApi.head(apiName, path, init);\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n APIClass.prototype.isCancel = function (error) {\n return this._restApi.isCancel(error);\n };\n /**\n * Cancels an inflight request\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n APIClass.prototype.cancel = function (request, message) {\n return this._restApi.cancel(request, message);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n APIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , this._restApi.endpoint(apiName)];\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n\n\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n return this._graphqlApi.getGraphqlOperationType(operation);\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n\n\n APIClass.prototype.graphql = function (options, additionalHeaders) {\n return this._graphqlApi.graphql(options, additionalHeaders);\n };\n\n return APIClass;\n}();\n\nexport { APIClass };\nexport var API = new APIClass(null);\nAmplify.register(API);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useState } from 'react';\nimport ResponsiveObserve from '../../_util/responsiveObserve';\n\nfunction useBreakpoint() {\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n screens = _useState2[0],\n setScreens = _useState2[1];\n\n useEffect(function () {\n var token = ResponsiveObserve.subscribe(function (supportScreens) {\n setScreens(supportScreens);\n });\n return function () {\n return ResponsiveObserve.unsubscribe(token);\n };\n }, []);\n return screens;\n}\n\nexport default useBreakpoint;","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport * as React from 'react';\nexport var MiniStoreContext = React.createContext(null);\n\nvar Provider =\n/** @class */\nfunction (_super) {\n __extends(Provider, _super);\n\n function Provider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Provider.prototype.render = function () {\n return React.createElement(MiniStoreContext.Provider, {\n value: this.props.store\n }, this.props.children);\n };\n\n return Provider;\n}(React.Component);\n\nexport { Provider };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport * as React from 'react';\nimport shallowEqual from 'shallowequal';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { MiniStoreContext } from './Provider';\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nvar defaultMapStateToProps = function defaultMapStateToProps() {\n return {};\n};\n\nexport function connect(mapStateToProps, options) {\n if (options === void 0) {\n options = {};\n }\n\n var shouldSubscribe = !!mapStateToProps;\n var finalMapStateToProps = mapStateToProps || defaultMapStateToProps;\n return function wrapWithConnect(WrappedComponent) {\n var Connect =\n /** @class */\n function (_super) {\n __extends(Connect, _super);\n\n function Connect(props, context) {\n var _this = _super.call(this, props, context) || this;\n\n _this.unsubscribe = null;\n\n _this.handleChange = function () {\n if (!_this.unsubscribe) {\n return;\n }\n\n var nextState = finalMapStateToProps(_this.store.getState(), _this.props);\n\n _this.setState({\n subscribed: nextState\n });\n };\n\n _this.store = _this.context;\n _this.state = {\n subscribed: finalMapStateToProps(_this.store.getState(), props),\n store: _this.store,\n props: props\n };\n return _this;\n }\n\n Connect.getDerivedStateFromProps = function (props, prevState) {\n // using ownProps\n if (mapStateToProps && mapStateToProps.length === 2 && props !== prevState.props) {\n return {\n subscribed: finalMapStateToProps(prevState.store.getState(), props),\n props: props\n };\n }\n\n return {\n props: props\n };\n };\n\n Connect.prototype.componentDidMount = function () {\n this.trySubscribe();\n };\n\n Connect.prototype.componentWillUnmount = function () {\n this.tryUnsubscribe();\n };\n\n Connect.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state.subscribed, nextState.subscribed);\n };\n\n Connect.prototype.trySubscribe = function () {\n if (shouldSubscribe) {\n this.unsubscribe = this.store.subscribe(this.handleChange);\n this.handleChange();\n }\n };\n\n Connect.prototype.tryUnsubscribe = function () {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n };\n\n Connect.prototype.render = function () {\n var props = __assign(__assign(__assign({}, this.props), this.state.subscribed), {\n store: this.store\n });\n\n return React.createElement(WrappedComponent, __assign({}, props, {\n ref: this.props.miniStoreForwardedRef\n }));\n };\n\n Connect.displayName = \"Connect(\" + getDisplayName(WrappedComponent) + \")\";\n Connect.contextType = MiniStoreContext;\n return Connect;\n }(React.Component);\n\n if (options.forwardRef) {\n var forwarded = React.forwardRef(function (props, ref) {\n return React.createElement(Connect, __assign({}, props, {\n miniStoreForwardedRef: ref\n }));\n });\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nexport function create(initialState) {\n var state = initialState;\n var listeners = [];\n\n function setState(partial) {\n state = __assign(__assign({}, state), partial);\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n }\n\n function getState() {\n return state;\n }\n\n function subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n\n return {\n setState: setState,\n getState: getState,\n subscribe: subscribe\n };\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n var args = [].slice.call(arguments, 0);\n\n if (args.length === 1) {\n return args[0];\n }\n\n return function chainedFunction() {\n for (var i = 0; i < args.length; i++) {\n if (args[i] && args[i].apply) {\n args[i].apply(this, arguments);\n }\n }\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\"; // MIT License from https://github.com/kaimallea/isMobile\n\nvar applePhone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\n\nvar androidTablet = /Android/i;\nvar amazonPhone = /\\bAndroid(?:.+)SD4930UR\\b/i;\nvar amazonTablet = /\\bAndroid(?:.+)(?:KF[A-Z]{2,4})\\b/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\n\nvar otherBlackberry = /BlackBerry/i;\nvar otherBlackberry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\n\nfunction isMobile(userAgent) {\n var ua = userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : ''); // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n\n var tmp = ua.split('[FBAN');\n\n if (typeof tmp[1] !== 'undefined') {\n var _tmp = tmp;\n\n var _tmp2 = _slicedToArray(_tmp, 1);\n\n ua = _tmp2[0];\n } // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probably happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n\n\n tmp = ua.split('Twitter');\n\n if (typeof tmp[1] !== 'undefined') {\n var _tmp3 = tmp;\n\n var _tmp4 = _slicedToArray(_tmp3, 1);\n\n ua = _tmp4[0];\n }\n\n var result = {\n apple: {\n phone: match(applePhone, ua) && !match(windowsPhone, ua),\n ipod: match(appleIpod, ua),\n tablet: !match(applePhone, ua) && match(appleTablet, ua) && !match(windowsPhone, ua),\n device: (match(applePhone, ua) || match(appleIpod, ua) || match(appleTablet, ua)) && !match(windowsPhone, ua)\n },\n amazon: {\n phone: match(amazonPhone, ua),\n tablet: !match(amazonPhone, ua) && match(amazonTablet, ua),\n device: match(amazonPhone, ua) || match(amazonTablet, ua)\n },\n android: {\n phone: !match(windowsPhone, ua) && match(amazonPhone, ua) || !match(windowsPhone, ua) && match(androidPhone, ua),\n tablet: !match(windowsPhone, ua) && !match(amazonPhone, ua) && !match(androidPhone, ua) && (match(amazonTablet, ua) || match(androidTablet, ua)),\n device: !match(windowsPhone, ua) && (match(amazonPhone, ua) || match(amazonTablet, ua) || match(androidPhone, ua) || match(androidTablet, ua)) || match(/\\bokhttp\\b/i, ua)\n },\n windows: {\n phone: match(windowsPhone, ua),\n tablet: match(windowsTablet, ua),\n device: match(windowsPhone, ua) || match(windowsTablet, ua)\n },\n other: {\n blackberry: match(otherBlackberry, ua),\n blackberry10: match(otherBlackberry10, ua),\n opera: match(otherOpera, ua),\n firefox: match(otherFirefox, ua),\n chrome: match(otherChrome, ua),\n device: match(otherBlackberry, ua) || match(otherBlackberry10, ua) || match(otherOpera, ua) || match(otherFirefox, ua) || match(otherChrome, ua)\n },\n // Additional\n any: null,\n phone: null,\n tablet: null\n };\n result.any = result.apple.device || result.android.device || result.windows.device || result.other.device; // excludes 'other' devices and ipods, targeting touchscreen phones\n\n result.phone = result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet = result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n\nvar defaultResult = _objectSpread(_objectSpread({}, isMobile()), {}, {\n isMobile: isMobile\n});\n\nexport default defaultResult;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport isMobile from './utils/isMobile';\nexport function noop() {}\nexport function getKeyFromChildrenIndex(child, menuEventKey, index) {\n var prefix = menuEventKey || '';\n return child.key || \"\".concat(prefix, \"item_\").concat(index);\n}\nexport function getMenuIdFromSubMenuEventKey(eventKey) {\n return \"\".concat(eventKey, \"-menu-\");\n}\nexport function loopMenuItem(children, cb) {\n var index = -1;\n React.Children.forEach(children, function (c) {\n index += 1;\n\n if (c && c.type && c.type.isMenuItemGroup) {\n React.Children.forEach(c.props.children, function (c2) {\n index += 1;\n cb(c2, index);\n });\n } else {\n cb(c, index);\n }\n });\n}\nexport function loopMenuItemRecursively(children, keys, ret) {\n /* istanbul ignore if */\n if (!children || ret.find) {\n return;\n }\n\n React.Children.forEach(children, function (c) {\n if (c) {\n var construct = c.type;\n\n if (!construct || !(construct.isSubMenu || construct.isMenuItem || construct.isMenuItemGroup)) {\n return;\n }\n\n if (keys.indexOf(c.key) !== -1) {\n // eslint-disable-next-line no-param-reassign\n ret.find = true;\n } else if (c.props.children) {\n loopMenuItemRecursively(c.props.children, keys, ret);\n }\n }\n });\n}\nexport var menuAllProps = ['defaultSelectedKeys', 'selectedKeys', 'defaultOpenKeys', 'openKeys', 'mode', 'getPopupContainer', 'onSelect', 'onDeselect', 'onDestroy', 'openTransitionName', 'openAnimation', 'subMenuOpenDelay', 'subMenuCloseDelay', 'forceSubMenuRender', 'triggerSubMenuAction', 'level', 'selectable', 'multiple', 'onOpenChange', 'visible', 'focusable', 'defaultActiveFirst', 'prefixCls', 'inlineIndent', 'parentMenu', 'title', 'rootPrefixCls', 'eventKey', 'active', 'onItemHover', 'onTitleMouseEnter', 'onTitleMouseLeave', 'onTitleClick', 'popupAlign', 'popupOffset', 'isOpen', 'renderMenuItem', 'manualRef', 'subMenuKey', 'disabled', 'index', 'isSelected', 'store', 'activeKey', 'builtinPlacements', 'overflowedIndicator', 'motion', // the following keys found need to be removed from test regression\n'attribute', 'value', 'popupClassName', 'inlineCollapsed', 'menu', 'theme', 'itemIcon', 'expandIcon']; // ref: https://github.com/ant-design/ant-design/issues/14007\n// ref: https://bugs.chromium.org/p/chromium/issues/detail?id=360889\n// getBoundingClientRect return the full precision value, which is\n// not the same behavior as on chrome. Set the precision to 6 to\n// unify their behavior\n\nexport var getWidth = function getWidth(elem) {\n var includeMargin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var width = elem && typeof elem.getBoundingClientRect === 'function' && elem.getBoundingClientRect().width;\n\n if (width) {\n if (includeMargin) {\n var _getComputedStyle = getComputedStyle(elem),\n marginLeft = _getComputedStyle.marginLeft,\n marginRight = _getComputedStyle.marginRight;\n\n width += +marginLeft.replace('px', '') + +marginRight.replace('px', '');\n }\n\n width = +width.toFixed(6);\n }\n\n return width || 0;\n};\nexport var setStyle = function setStyle(elem, styleProperty, value) {\n if (elem && _typeof(elem.style) === 'object') {\n // eslint-disable-next-line no-param-reassign\n elem.style[styleProperty] = value;\n }\n};\nexport var isMobileDevice = function isMobileDevice() {\n return isMobile.any;\n};","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport default placements;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport Trigger from 'rc-trigger';\nimport raf from \"rc-util/es/raf\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport { connect } from 'mini-store';\nimport SubPopupMenu from './SubPopupMenu';\nimport { placements, placementsRtl } from './placements';\nimport { noop, loopMenuItemRecursively, getMenuIdFromSubMenuEventKey, menuAllProps } from './util';\nvar guid = 0;\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\n\nvar updateDefaultActiveFirst = function updateDefaultActiveFirst(store, eventKey, defaultActiveFirst) {\n var menuId = getMenuIdFromSubMenuEventKey(eventKey);\n var state = store.getState();\n store.setState({\n defaultActiveFirst: _objectSpread(_objectSpread({}, state.defaultActiveFirst), {}, _defineProperty({}, menuId, defaultActiveFirst))\n });\n};\n\nexport var SubMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(SubMenu, _React$Component);\n\n var _super = _createSuper(SubMenu);\n\n function SubMenu(props) {\n var _this;\n\n _classCallCheck(this, SubMenu);\n\n _this = _super.call(this, props);\n\n _this.onDestroy = function (key) {\n _this.props.onDestroy(key);\n };\n /**\n * note:\n * This legacy code that `onKeyDown` is called by parent instead of dom self.\n * which need return code to check if this event is handled\n */\n\n\n _this.onKeyDown = function (e) {\n var keyCode = e.keyCode;\n var menu = _this.menuInstance;\n var store = _this.props.store;\n\n var visible = _this.getVisible();\n\n if (keyCode === KeyCode.ENTER) {\n _this.onTitleClick(e);\n\n updateDefaultActiveFirst(store, _this.props.eventKey, true);\n return true;\n }\n\n if (keyCode === KeyCode.RIGHT) {\n if (visible) {\n menu.onKeyDown(e);\n } else {\n _this.triggerOpenChange(true); // need to update current menu's defaultActiveFirst value\n\n\n updateDefaultActiveFirst(store, _this.props.eventKey, true);\n }\n\n return true;\n }\n\n if (keyCode === KeyCode.LEFT) {\n var handled;\n\n if (visible) {\n handled = menu.onKeyDown(e);\n } else {\n return undefined;\n }\n\n if (!handled) {\n _this.triggerOpenChange(false);\n\n handled = true;\n }\n\n return handled;\n }\n\n if (visible && (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN)) {\n return menu.onKeyDown(e);\n }\n\n return undefined;\n };\n\n _this.onOpenChange = function (e) {\n _this.props.onOpenChange(e);\n };\n\n _this.onPopupVisibleChange = function (visible) {\n _this.triggerOpenChange(visible, visible ? 'mouseenter' : 'mouseleave');\n };\n\n _this.onMouseEnter = function (e) {\n var _this$props = _this.props,\n key = _this$props.eventKey,\n onMouseEnter = _this$props.onMouseEnter,\n store = _this$props.store;\n updateDefaultActiveFirst(store, _this.props.eventKey, false);\n onMouseEnter({\n key: key,\n domEvent: e\n });\n };\n\n _this.onMouseLeave = function (e) {\n var _this$props2 = _this.props,\n parentMenu = _this$props2.parentMenu,\n eventKey = _this$props2.eventKey,\n onMouseLeave = _this$props2.onMouseLeave;\n parentMenu.subMenuInstance = _assertThisInitialized(_this);\n onMouseLeave({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onTitleMouseEnter = function (domEvent) {\n var _this$props3 = _this.props,\n key = _this$props3.eventKey,\n onItemHover = _this$props3.onItemHover,\n onTitleMouseEnter = _this$props3.onTitleMouseEnter;\n onItemHover({\n key: key,\n hover: true\n });\n onTitleMouseEnter({\n key: key,\n domEvent: domEvent\n });\n };\n\n _this.onTitleMouseLeave = function (e) {\n var _this$props4 = _this.props,\n parentMenu = _this$props4.parentMenu,\n eventKey = _this$props4.eventKey,\n onItemHover = _this$props4.onItemHover,\n onTitleMouseLeave = _this$props4.onTitleMouseLeave;\n parentMenu.subMenuInstance = _assertThisInitialized(_this);\n onItemHover({\n key: eventKey,\n hover: false\n });\n onTitleMouseLeave({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onTitleClick = function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n props.onTitleClick({\n key: props.eventKey,\n domEvent: e\n });\n\n if (props.triggerSubMenuAction === 'hover') {\n return;\n }\n\n _this.triggerOpenChange(!_this.getVisible(), 'click');\n\n updateDefaultActiveFirst(props.store, _this.props.eventKey, false);\n };\n\n _this.onSubMenuClick = function (info) {\n // in the case of overflowed submenu\n // onClick is not copied over\n if (typeof _this.props.onClick === 'function') {\n _this.props.onClick(_this.addKeyPath(info));\n }\n };\n\n _this.onSelect = function (info) {\n _this.props.onSelect(info);\n };\n\n _this.onDeselect = function (info) {\n _this.props.onDeselect(info);\n };\n\n _this.getPrefixCls = function () {\n return \"\".concat(_this.props.rootPrefixCls, \"-submenu\");\n };\n\n _this.getActiveClassName = function () {\n return \"\".concat(_this.getPrefixCls(), \"-active\");\n };\n\n _this.getDisabledClassName = function () {\n return \"\".concat(_this.getPrefixCls(), \"-disabled\");\n };\n\n _this.getSelectedClassName = function () {\n return \"\".concat(_this.getPrefixCls(), \"-selected\");\n };\n\n _this.getOpenClassName = function () {\n return \"\".concat(_this.props.rootPrefixCls, \"-submenu-open\");\n };\n\n _this.getVisible = function () {\n return _this.state.isOpen;\n };\n\n _this.getMode = function () {\n return _this.state.mode;\n };\n\n _this.saveMenuInstance = function (c) {\n // children menu instance\n _this.menuInstance = c;\n };\n\n _this.addKeyPath = function (info) {\n return _objectSpread(_objectSpread({}, info), {}, {\n keyPath: (info.keyPath || []).concat(_this.props.eventKey)\n });\n };\n\n _this.triggerOpenChange = function (open, type) {\n var key = _this.props.eventKey;\n\n var openChange = function openChange() {\n _this.onOpenChange({\n key: key,\n item: _assertThisInitialized(_this),\n trigger: type,\n open: open\n });\n };\n\n if (type === 'mouseenter') {\n // make sure mouseenter happen after other menu item's mouseleave\n _this.mouseenterTimeout = setTimeout(function () {\n openChange();\n }, 0);\n } else {\n openChange();\n }\n };\n\n _this.isChildrenSelected = function () {\n var ret = {\n find: false\n };\n loopMenuItemRecursively(_this.props.children, _this.props.selectedKeys, ret);\n return ret.find;\n };\n\n _this.isInlineMode = function () {\n return _this.getMode() === 'inline';\n };\n\n _this.adjustWidth = function () {\n /* istanbul ignore if */\n if (!_this.subMenuTitle || !_this.menuInstance) {\n return;\n }\n\n var popupMenu = ReactDOM.findDOMNode(_this.menuInstance);\n\n if (popupMenu.offsetWidth >= _this.subMenuTitle.offsetWidth) {\n return;\n }\n /* istanbul ignore next */\n\n\n popupMenu.style.minWidth = \"\".concat(_this.subMenuTitle.offsetWidth, \"px\");\n };\n\n _this.saveSubMenuTitle = function (subMenuTitle) {\n _this.subMenuTitle = subMenuTitle;\n };\n\n _this.getBaseProps = function () {\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n props = _assertThisInitialize2.props;\n\n var mergedMode = _this.getMode();\n\n return {\n mode: mergedMode === 'horizontal' ? 'vertical' : mergedMode,\n visible: _this.getVisible(),\n level: props.level + 1,\n inlineIndent: props.inlineIndent,\n focusable: false,\n onClick: _this.onSubMenuClick,\n onSelect: _this.onSelect,\n onDeselect: _this.onDeselect,\n onDestroy: _this.onDestroy,\n selectedKeys: props.selectedKeys,\n eventKey: \"\".concat(props.eventKey, \"-menu-\"),\n openKeys: props.openKeys,\n motion: props.motion,\n onOpenChange: _this.onOpenChange,\n subMenuOpenDelay: props.subMenuOpenDelay,\n parentMenu: _assertThisInitialized(_this),\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n triggerSubMenuAction: props.triggerSubMenuAction,\n builtinPlacements: props.builtinPlacements,\n defaultActiveFirst: props.store.getState().defaultActiveFirst[getMenuIdFromSubMenuEventKey(props.eventKey)],\n multiple: props.multiple,\n prefixCls: props.rootPrefixCls,\n id: _this.internalMenuId,\n manualRef: _this.saveMenuInstance,\n itemIcon: props.itemIcon,\n expandIcon: props.expandIcon,\n direction: props.direction\n };\n };\n\n _this.getMotion = function (mode, visible) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n haveRendered = _assertThisInitialize3.haveRendered;\n\n var _this$props5 = _this.props,\n motion = _this$props5.motion,\n rootPrefixCls = _this$props5.rootPrefixCls; // don't show transition on first rendering (no animation for opened menu)\n // show appear transition if it's not visible (not sure why)\n // show appear transition if it's not inline mode\n\n var mergedMotion = _objectSpread(_objectSpread({}, motion), {}, {\n leavedClassName: \"\".concat(rootPrefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: haveRendered || !visible || mode !== 'inline'\n });\n\n return mergedMotion;\n };\n\n var store = props.store,\n eventKey = props.eventKey;\n\n var _store$getState = store.getState(),\n defaultActiveFirst = _store$getState.defaultActiveFirst;\n\n _this.isRootMenu = false;\n var value = false;\n\n if (defaultActiveFirst) {\n value = defaultActiveFirst[eventKey];\n }\n\n updateDefaultActiveFirst(store, eventKey, value);\n _this.state = {\n mode: props.mode,\n isOpen: props.isOpen\n };\n return _this;\n }\n\n _createClass(SubMenu, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this2 = this;\n\n var _this$props6 = this.props,\n mode = _this$props6.mode,\n parentMenu = _this$props6.parentMenu,\n manualRef = _this$props6.manualRef,\n isOpen = _this$props6.isOpen;\n\n var updateState = function updateState() {\n _this2.setState({\n mode: mode,\n isOpen: isOpen\n });\n }; // Delay sync when mode changed in case openKeys change not sync\n\n\n var isOpenChanged = isOpen !== this.state.isOpen;\n var isModeChanged = mode !== this.state.mode;\n\n if (isModeChanged || isOpenChanged) {\n raf.cancel(this.updateStateRaf);\n\n if (isModeChanged) {\n this.updateStateRaf = raf(updateState);\n } else {\n updateState();\n }\n } // invoke customized ref to expose component to mixin\n\n\n if (manualRef) {\n manualRef(this);\n }\n\n if (mode !== 'horizontal' || !(parentMenu === null || parentMenu === void 0 ? void 0 : parentMenu.isRootMenu) || !isOpen) {\n return;\n }\n\n this.minWidthTimeout = setTimeout(function () {\n return _this2.adjustWidth();\n }, 0);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$props7 = this.props,\n onDestroy = _this$props7.onDestroy,\n eventKey = _this$props7.eventKey;\n\n if (onDestroy) {\n onDestroy(eventKey);\n }\n /* istanbul ignore if */\n\n\n if (this.minWidthTimeout) {\n clearTimeout(this.minWidthTimeout);\n }\n /* istanbul ignore if */\n\n\n if (this.mouseenterTimeout) {\n clearTimeout(this.mouseenterTimeout);\n }\n\n raf.cancel(this.updateStateRaf);\n }\n }, {\n key: \"renderPopupMenu\",\n value: function renderPopupMenu(className, style) {\n var baseProps = this.getBaseProps();\n /**\n * zombiej: Why SubPopupMenu here?\n * Seems whatever popup or inline mode both will render SubPopupMenu.\n * It's controlled by Trigger for popup or not.\n */\n\n return /*#__PURE__*/React.createElement(SubPopupMenu, _extends({}, baseProps, {\n id: this.internalMenuId,\n className: className,\n style: style\n }), this.props.children);\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this3 = this;\n\n var baseProps = this.getBaseProps();\n var mode = baseProps.mode,\n visible = baseProps.visible,\n forceSubMenuRender = baseProps.forceSubMenuRender,\n direction = baseProps.direction; // [Legacy] getMotion must be called before `haveRendered`\n\n var mergedMotion = this.getMotion(mode, visible);\n this.haveRendered = true;\n this.haveOpened = this.haveOpened || visible || forceSubMenuRender; // never rendered not planning to, don't render\n\n if (!this.haveOpened) {\n return /*#__PURE__*/React.createElement(\"div\", null);\n }\n\n var sharedClassName = classNames(\"\".concat(baseProps.prefixCls, \"-sub\"), _defineProperty({}, \"\".concat(baseProps.prefixCls, \"-rtl\"), direction === 'rtl'));\n\n if (!this.isInlineMode()) {\n return this.renderPopupMenu(sharedClassName);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: baseProps.visible\n }, mergedMotion), function (_ref) {\n var className = _ref.className,\n style = _ref.style;\n var mergedClassName = classNames(sharedClassName, className);\n return _this3.renderPopupMenu(mergedClassName, style);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames2, _props$parentMenu, _classNames3;\n\n var props = _objectSpread({}, this.props);\n\n var visible = this.getVisible();\n var prefixCls = this.getPrefixCls();\n var inline = this.isInlineMode();\n var mergedMode = this.getMode();\n var className = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(mergedMode), (_classNames2 = {}, _defineProperty(_classNames2, props.className, !!props.className), _defineProperty(_classNames2, this.getOpenClassName(), visible), _defineProperty(_classNames2, this.getActiveClassName(), props.active || visible && !inline), _defineProperty(_classNames2, this.getDisabledClassName(), props.disabled), _defineProperty(_classNames2, this.getSelectedClassName(), this.isChildrenSelected()), _classNames2));\n\n if (!this.internalMenuId) {\n if (props.eventKey) {\n this.internalMenuId = \"\".concat(props.eventKey, \"$Menu\");\n } else {\n guid += 1;\n this.internalMenuId = \"$__$\".concat(guid, \"$Menu\");\n }\n }\n\n var mouseEvents = {};\n var titleClickEvents = {};\n var titleMouseEvents = {};\n\n if (!props.disabled) {\n mouseEvents = {\n onMouseLeave: this.onMouseLeave,\n onMouseEnter: this.onMouseEnter\n }; // only works in title, not outer li\n\n titleClickEvents = {\n onClick: this.onTitleClick\n };\n titleMouseEvents = {\n onMouseEnter: this.onTitleMouseEnter,\n onMouseLeave: this.onTitleMouseLeave\n };\n }\n\n var style = {};\n var direction = props.direction;\n var isRTL = direction === 'rtl';\n\n if (inline) {\n if (isRTL) {\n style.paddingRight = props.inlineIndent * props.level;\n } else {\n style.paddingLeft = props.inlineIndent * props.level;\n }\n }\n\n var ariaOwns = {}; // only set aria-owns when menu is open\n // otherwise it would be an invalid aria-owns value\n // since corresponding node cannot be found\n\n if (this.getVisible()) {\n ariaOwns = {\n 'aria-owns': this.internalMenuId\n };\n } // expand custom icon should NOT be displayed in menu with horizontal mode.\n\n\n var icon = null;\n\n if (mergedMode !== 'horizontal') {\n icon = this.props.expandIcon; // ReactNode\n\n if (typeof this.props.expandIcon === 'function') {\n icon = /*#__PURE__*/React.createElement(this.props.expandIcon, _objectSpread({}, this.props));\n }\n }\n\n var title = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: this.saveSubMenuTitle,\n style: style,\n className: \"\".concat(prefixCls, \"-title\"),\n role: \"button\"\n }, titleMouseEvents, titleClickEvents, {\n \"aria-expanded\": visible\n }, ariaOwns, {\n \"aria-haspopup\": \"true\",\n title: typeof props.title === 'string' ? props.title : undefined\n }), props.title, icon || /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }));\n var children = this.renderChildren();\n var getPopupContainer = ((_props$parentMenu = props.parentMenu) === null || _props$parentMenu === void 0 ? void 0 : _props$parentMenu.isRootMenu) ? props.parentMenu.props.getPopupContainer : function (triggerNode) {\n return triggerNode.parentNode;\n };\n var popupPlacement = popupPlacementMap[mergedMode];\n var popupAlign = props.popupOffset ? {\n offset: props.popupOffset\n } : {};\n var popupClassName = classNames((_classNames3 = {}, _defineProperty(_classNames3, props.popupClassName, props.popupClassName && !inline), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-rtl\"), isRTL), _classNames3));\n var disabled = props.disabled,\n triggerSubMenuAction = props.triggerSubMenuAction,\n subMenuOpenDelay = props.subMenuOpenDelay,\n forceSubMenuRender = props.forceSubMenuRender,\n subMenuCloseDelay = props.subMenuCloseDelay,\n builtinPlacements = props.builtinPlacements;\n menuAllProps.forEach(function (key) {\n return delete props[key];\n }); // Set onClick to null, to ignore propagated onClick event\n\n delete props.onClick;\n var placement = isRTL ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n delete props.direction; // [Legacy] It's a fast fix,\n // but we should check if we can refactor this to make code more easy to understand\n\n var baseProps = this.getBaseProps();\n var mergedMotion = inline ? null : this.getMotion(baseProps.mode, baseProps.visible);\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, props, mouseEvents, {\n className: className,\n role: \"menuitem\"\n }), /*#__PURE__*/React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), popupClassName),\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: inline ? false : visible,\n popupAlign: popupAlign,\n popup: inline ? null : children,\n action: disabled || inline ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: this.onPopupVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion\n }, title), inline ? children : null);\n }\n }]);\n\n return SubMenu;\n}(React.Component);\nSubMenu.defaultProps = {\n onMouseEnter: noop,\n onMouseLeave: noop,\n onTitleMouseEnter: noop,\n onTitleMouseLeave: noop,\n onTitleClick: noop,\n manualRef: noop,\n mode: 'vertical',\n title: ''\n};\nvar connected = connect(function (_ref2, _ref3) {\n var openKeys = _ref2.openKeys,\n activeKey = _ref2.activeKey,\n selectedKeys = _ref2.selectedKeys;\n var eventKey = _ref3.eventKey,\n subMenuKey = _ref3.subMenuKey;\n return {\n isOpen: openKeys.indexOf(eventKey) > -1,\n active: activeKey[subMenuKey] === eventKey,\n selectedKeys: selectedKeys\n };\n})(SubMenu);\nconnected.isSubMenu = true;\nexport default connected;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport SubMenu from './SubMenu';\nimport { getWidth, setStyle, menuAllProps } from './util';\nvar MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\nvar FLOAT_PRECISION_ADJUST = 0.5;\n\nvar DOMWrap = /*#__PURE__*/function (_React$Component) {\n _inherits(DOMWrap, _React$Component);\n\n var _super = _createSuper(DOMWrap);\n\n function DOMWrap() {\n var _this;\n\n _classCallCheck(this, DOMWrap);\n\n _this = _super.apply(this, arguments);\n _this.resizeObserver = null;\n _this.mutationObserver = null; // original scroll size of the list\n\n _this.originalTotalWidth = 0; // copy of overflowed items\n\n _this.overflowedItems = []; // cache item of the original items (so we can track the size and order)\n\n _this.menuItemSizes = [];\n _this.cancelFrameId = null;\n _this.state = {\n lastVisibleIndex: undefined\n };\n _this.childRef = /*#__PURE__*/React.createRef(); // get all valid menuItem nodes\n\n _this.getMenuItemNodes = function () {\n var prefixCls = _this.props.prefixCls;\n var ul = _this.childRef.current;\n\n if (!ul) {\n return [];\n } // filter out all overflowed indicator placeholder\n\n\n return [].slice.call(ul.children).filter(function (node) {\n return node.className.split(' ').indexOf(\"\".concat(prefixCls, \"-overflowed-submenu\")) < 0;\n });\n };\n\n _this.getOverflowedSubMenuItem = function (keyPrefix, overflowedItems, renderPlaceholder) {\n var _this$props = _this.props,\n overflowedIndicator = _this$props.overflowedIndicator,\n level = _this$props.level,\n mode = _this$props.mode,\n prefixCls = _this$props.prefixCls,\n theme = _this$props.theme;\n\n if (level !== 1 || mode !== 'horizontal') {\n return null;\n } // put all the overflowed item inside a submenu\n // with a title of overflow indicator ('...')\n\n\n var copy = _this.props.children[0];\n\n var _copy$props = copy.props,\n throwAway = _copy$props.children,\n title = _copy$props.title,\n propStyle = _copy$props.style,\n rest = _objectWithoutProperties(_copy$props, [\"children\", \"title\", \"style\"]);\n\n var style = _objectSpread({}, propStyle);\n\n var key = \"\".concat(keyPrefix, \"-overflowed-indicator\");\n var eventKey = \"\".concat(keyPrefix, \"-overflowed-indicator\");\n\n if (overflowedItems.length === 0 && renderPlaceholder !== true) {\n style = _objectSpread(_objectSpread({}, style), {}, {\n display: 'none'\n });\n } else if (renderPlaceholder) {\n style = _objectSpread(_objectSpread({}, style), {}, {\n visibility: 'hidden',\n // prevent from taking normal dom space\n position: 'absolute'\n });\n key = \"\".concat(key, \"-placeholder\");\n eventKey = \"\".concat(eventKey, \"-placeholder\");\n }\n\n var popupClassName = theme ? \"\".concat(prefixCls, \"-\").concat(theme) : '';\n var props = {};\n menuAllProps.forEach(function (k) {\n if (rest[k] !== undefined) {\n props[k] = rest[k];\n }\n });\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n title: overflowedIndicator,\n className: \"\".concat(prefixCls, \"-overflowed-submenu\"),\n popupClassName: popupClassName\n }, props, {\n key: key,\n eventKey: eventKey,\n disabled: false,\n style: style\n }), overflowedItems);\n }; // memorize rendered menuSize\n\n\n _this.setChildrenWidthAndResize = function () {\n if (_this.props.mode !== 'horizontal') {\n return;\n }\n\n var ul = _this.childRef.current;\n\n if (!ul) {\n return;\n }\n\n var ulChildrenNodes = ul.children;\n\n if (!ulChildrenNodes || ulChildrenNodes.length === 0) {\n return;\n }\n\n var lastOverflowedIndicatorPlaceholder = ul.children[ulChildrenNodes.length - 1]; // need last overflowed indicator for calculating length;\n\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'inline-block');\n\n var menuItemNodes = _this.getMenuItemNodes(); // reset display attribute for all hidden elements caused by overflow to calculate updated width\n // and then reset to original state after width calculation\n\n\n var overflowedItems = menuItemNodes.filter(function (c) {\n return c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0;\n });\n overflowedItems.forEach(function (c) {\n setStyle(c, 'display', 'inline-block');\n });\n _this.menuItemSizes = menuItemNodes.map(function (c) {\n return getWidth(c, true);\n });\n overflowedItems.forEach(function (c) {\n setStyle(c, 'display', 'none');\n });\n _this.overflowedIndicatorWidth = getWidth(ul.children[ul.children.length - 1], true);\n _this.originalTotalWidth = _this.menuItemSizes.reduce(function (acc, cur) {\n return acc + cur;\n }, 0);\n\n _this.handleResize(); // prevent the overflowed indicator from taking space;\n\n\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'none');\n };\n\n _this.handleResize = function () {\n if (_this.props.mode !== 'horizontal') {\n return;\n }\n\n var ul = _this.childRef.current;\n\n if (!ul) {\n return;\n }\n\n var width = getWidth(ul);\n _this.overflowedItems = [];\n var currentSumWidth = 0; // index for last visible child in horizontal mode\n\n var lastVisibleIndex; // float number comparison could be problematic\n // e.g. 0.1 + 0.2 > 0.3 =====> true\n // thus using FLOAT_PRECISION_ADJUST as buffer to help the situation\n\n if (_this.originalTotalWidth > width + FLOAT_PRECISION_ADJUST) {\n lastVisibleIndex = -1;\n\n _this.menuItemSizes.forEach(function (liWidth) {\n currentSumWidth += liWidth;\n\n if (currentSumWidth + _this.overflowedIndicatorWidth <= width) {\n lastVisibleIndex += 1;\n }\n });\n }\n\n _this.setState({\n lastVisibleIndex: lastVisibleIndex\n });\n };\n\n return _this;\n }\n\n _createClass(DOMWrap, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.setChildrenWidthAndResize();\n\n if (this.props.level === 1 && this.props.mode === 'horizontal') {\n var menuUl = this.childRef.current;\n\n if (!menuUl) {\n return;\n }\n\n this.resizeObserver = new ResizeObserver(function (entries) {\n entries.forEach(function () {\n var cancelFrameId = _this2.cancelFrameId;\n cancelAnimationFrame(cancelFrameId);\n _this2.cancelFrameId = requestAnimationFrame(_this2.setChildrenWidthAndResize);\n });\n });\n [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n _this2.resizeObserver.observe(el);\n });\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutationObserver = new MutationObserver(function () {\n _this2.resizeObserver.disconnect();\n\n [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n _this2.resizeObserver.observe(el);\n });\n\n _this2.setChildrenWidthAndResize();\n });\n this.mutationObserver.observe(menuUl, {\n attributes: false,\n childList: true,\n subTree: false\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n\n cancelAnimationFrame(this.cancelFrameId);\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(children) {\n var _this3 = this; // need to take care of overflowed items in horizontal mode\n\n\n var lastVisibleIndex = this.state.lastVisibleIndex;\n return (children || []).reduce(function (acc, childNode, index) {\n var item = childNode;\n\n if (_this3.props.mode === 'horizontal') {\n var overflowed = _this3.getOverflowedSubMenuItem(childNode.props.eventKey, []);\n\n if (lastVisibleIndex !== undefined && _this3.props.className.indexOf(\"\".concat(_this3.props.prefixCls, \"-root\")) !== -1) {\n if (index > lastVisibleIndex) {\n item = /*#__PURE__*/React.cloneElement(childNode, // 这里修改 eventKey 是为了防止隐藏状态下还会触发 openkeys 事件\n {\n style: {\n display: 'none'\n },\n eventKey: \"\".concat(childNode.props.eventKey, \"-hidden\"),\n\n /**\n * Legacy code. Here `className` never used:\n * https://github.com/react-component/menu/commit/4cd6b49fce9d116726f4ea00dda85325d6f26500#diff-e2fa48f75c2dd2318295cde428556a76R240\n */\n className: \"\".concat(MENUITEM_OVERFLOWED_CLASSNAME)\n });\n }\n\n if (index === lastVisibleIndex + 1) {\n _this3.overflowedItems = children.slice(lastVisibleIndex + 1).map(function (c) {\n return /*#__PURE__*/React.cloneElement(c, // children[index].key will become '.$key' in clone by default,\n // we have to overwrite with the correct key explicitly\n {\n key: c.props.eventKey,\n mode: 'vertical-left'\n });\n });\n overflowed = _this3.getOverflowedSubMenuItem(childNode.props.eventKey, _this3.overflowedItems);\n }\n }\n\n var ret = [].concat(_toConsumableArray(acc), [overflowed, item]);\n\n if (index === children.length - 1) {\n // need a placeholder for calculating overflowed indicator width\n ret.push(_this3.getOverflowedSubMenuItem(childNode.props.eventKey, [], true));\n }\n\n return ret;\n }\n\n return [].concat(_toConsumableArray(acc), [item]);\n }, []);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n visible = _this$props2.visible,\n prefixCls = _this$props2.prefixCls,\n overflowedIndicator = _this$props2.overflowedIndicator,\n mode = _this$props2.mode,\n level = _this$props2.level,\n tag = _this$props2.tag,\n children = _this$props2.children,\n theme = _this$props2.theme,\n rest = _objectWithoutProperties(_this$props2, [\"visible\", \"prefixCls\", \"overflowedIndicator\", \"mode\", \"level\", \"tag\", \"children\", \"theme\"]);\n\n var Tag = tag;\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: this.childRef\n }, rest), this.renderChildren(children));\n }\n }]);\n\n return DOMWrap;\n}(React.Component);\n\nDOMWrap.defaultProps = {\n tag: 'div',\n className: ''\n};\nexport default DOMWrap;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { connect } from 'mini-store';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport createChainedFunction from \"rc-util/es/createChainedFunction\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport shallowEqual from 'shallowequal';\nimport classNames from 'classnames';\nimport { getKeyFromChildrenIndex, loopMenuItem, noop, menuAllProps, isMobileDevice } from './util';\nimport DOMWrap from './DOMWrap';\n\nfunction allDisabled(arr) {\n if (!arr.length) {\n return true;\n }\n\n return arr.every(function (c) {\n return !!c.props.disabled;\n });\n}\n\nfunction updateActiveKey(store, menuId, activeKey) {\n var state = store.getState();\n store.setState({\n activeKey: _objectSpread(_objectSpread({}, state.activeKey), {}, _defineProperty({}, menuId, activeKey))\n });\n}\n\nfunction getEventKey(props) {\n // when eventKey not available ,it's menu and return menu id '0-menu-'\n return props.eventKey || '0-menu-';\n}\n\nexport function getActiveKey(props, originalActiveKey) {\n var activeKey = originalActiveKey;\n var children = props.children,\n eventKey = props.eventKey;\n\n if (activeKey) {\n var found;\n loopMenuItem(children, function (c, i) {\n if (c && c.props && !c.props.disabled && activeKey === getKeyFromChildrenIndex(c, eventKey, i)) {\n found = true;\n }\n });\n\n if (found) {\n return activeKey;\n }\n }\n\n activeKey = null;\n\n if (props.defaultActiveFirst) {\n loopMenuItem(children, function (c, i) {\n if (!activeKey && c && !c.props.disabled) {\n activeKey = getKeyFromChildrenIndex(c, eventKey, i);\n }\n });\n return activeKey;\n }\n\n return activeKey;\n}\nexport function saveRef(c) {\n if (!c) {\n return;\n }\n /* eslint-disable @typescript-eslint/no-invalid-this */\n\n\n var index = this.instanceArray.indexOf(c);\n\n if (index !== -1) {\n // update component if it's already inside instanceArray\n this.instanceArray[index] = c;\n } else {\n // add component if it's not in instanceArray yet;\n this.instanceArray.push(c);\n }\n /* eslint-enable @typescript-eslint/no-invalid-this */\n\n}\nexport var SubPopupMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(SubPopupMenu, _React$Component);\n\n var _super = _createSuper(SubPopupMenu);\n\n function SubPopupMenu(props) {\n var _this;\n\n _classCallCheck(this, SubPopupMenu);\n\n _this = _super.call(this, props);\n /**\n * all keyboard events callbacks run from here at first\n *\n * note:\n * This legacy code that `onKeyDown` is called by parent instead of dom self.\n * which need return code to check if this event is handled\n */\n\n _this.onKeyDown = function (e, callback) {\n var keyCode = e.keyCode;\n var handled;\n\n _this.getFlatInstanceArray().forEach(function (obj) {\n if (obj && obj.props.active && obj.onKeyDown) {\n handled = obj.onKeyDown(e);\n }\n });\n\n if (handled) {\n return 1;\n }\n\n var activeItem = null;\n\n if (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN) {\n activeItem = _this.step(keyCode === KeyCode.UP ? -1 : 1);\n }\n\n if (activeItem) {\n e.preventDefault();\n updateActiveKey(_this.props.store, getEventKey(_this.props), activeItem.props.eventKey);\n\n if (typeof callback === 'function') {\n callback(activeItem);\n }\n\n return 1;\n }\n\n return undefined;\n };\n\n _this.onItemHover = function (e) {\n var key = e.key,\n hover = e.hover;\n updateActiveKey(_this.props.store, getEventKey(_this.props), hover ? key : null);\n };\n\n _this.onDeselect = function (selectInfo) {\n _this.props.onDeselect(selectInfo);\n };\n\n _this.onSelect = function (selectInfo) {\n _this.props.onSelect(selectInfo);\n };\n\n _this.onClick = function (e) {\n _this.props.onClick(e);\n };\n\n _this.onOpenChange = function (e) {\n _this.props.onOpenChange(e);\n };\n\n _this.onDestroy = function (key) {\n /* istanbul ignore next */\n _this.props.onDestroy(key);\n };\n\n _this.getFlatInstanceArray = function () {\n return _this.instanceArray;\n };\n\n _this.step = function (direction) {\n var children = _this.getFlatInstanceArray();\n\n var activeKey = _this.props.store.getState().activeKey[getEventKey(_this.props)];\n\n var len = children.length;\n\n if (!len) {\n return null;\n }\n\n if (direction < 0) {\n children = children.concat().reverse();\n } // find current activeIndex\n\n\n var activeIndex = -1;\n children.every(function (c, ci) {\n if (c && c.props.eventKey === activeKey) {\n activeIndex = ci;\n return false;\n }\n\n return true;\n });\n\n if (!_this.props.defaultActiveFirst && activeIndex !== -1 && allDisabled(children.slice(activeIndex, len - 1))) {\n return undefined;\n }\n\n var start = (activeIndex + 1) % len;\n var i = start;\n\n do {\n var child = children[i];\n\n if (!child || child.props.disabled) {\n i = (i + 1) % len;\n } else {\n return child;\n }\n } while (i !== start);\n\n return null;\n };\n\n _this.renderCommonMenuItem = function (child, i, extraProps) {\n var state = _this.props.store.getState();\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n var key = getKeyFromChildrenIndex(child, props.eventKey, i);\n var childProps = child.props; // https://github.com/ant-design/ant-design/issues/11517#issuecomment-477403055\n\n if (!childProps || typeof child.type === 'string') {\n return child;\n }\n\n var isActive = key === state.activeKey;\n\n var newChildProps = _objectSpread(_objectSpread({\n mode: childProps.mode || props.mode,\n level: props.level,\n inlineIndent: props.inlineIndent,\n renderMenuItem: _this.renderMenuItem,\n rootPrefixCls: props.prefixCls,\n index: i,\n parentMenu: props.parentMenu,\n // customized ref function, need to be invoked manually in child's componentDidMount\n manualRef: childProps.disabled ? undefined : createChainedFunction(child.ref, saveRef.bind(_assertThisInitialized(_this))),\n eventKey: key,\n active: !childProps.disabled && isActive,\n multiple: props.multiple,\n onClick: function onClick(e) {\n (childProps.onClick || noop)(e);\n\n _this.onClick(e);\n },\n onItemHover: _this.onItemHover,\n motion: props.motion,\n subMenuOpenDelay: props.subMenuOpenDelay,\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n onOpenChange: _this.onOpenChange,\n onDeselect: _this.onDeselect,\n onSelect: _this.onSelect,\n builtinPlacements: props.builtinPlacements,\n itemIcon: childProps.itemIcon || _this.props.itemIcon,\n expandIcon: childProps.expandIcon || _this.props.expandIcon\n }, extraProps), {}, {\n direction: props.direction\n }); // ref: https://github.com/ant-design/ant-design/issues/13943\n\n\n if (props.mode === 'inline' || isMobileDevice()) {\n newChildProps.triggerSubMenuAction = 'click';\n }\n\n return /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, newChildProps), {}, {\n key: key || i\n }));\n };\n\n _this.renderMenuItem = function (c, i, subMenuKey) {\n /* istanbul ignore if */\n if (!c) {\n return null;\n }\n\n var state = _this.props.store.getState();\n\n var extraProps = {\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n triggerSubMenuAction: _this.props.triggerSubMenuAction,\n subMenuKey: subMenuKey\n };\n return _this.renderCommonMenuItem(c, i, extraProps);\n };\n\n props.store.setState({\n activeKey: _objectSpread(_objectSpread({}, props.store.getState().activeKey), {}, _defineProperty({}, props.eventKey, getActiveKey(props, props.activeKey)))\n });\n _this.instanceArray = [];\n return _this;\n }\n\n _createClass(SubPopupMenu, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // invoke customized ref to expose component to mixin\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return this.props.visible || nextProps.visible || this.props.className !== nextProps.className || !shallowEqual(this.props.style, nextProps.style);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var props = this.props;\n var originalActiveKey = 'activeKey' in props ? props.activeKey : props.store.getState().activeKey[getEventKey(props)];\n var activeKey = getActiveKey(props, originalActiveKey);\n\n if (activeKey !== originalActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n } else if ('activeKey' in prevProps) {\n // If prev activeKey is not same as current activeKey,\n // we should set it.\n var prevActiveKey = getActiveKey(prevProps, prevProps.activeKey);\n\n if (activeKey !== prevActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var props = _extends({}, this.props);\n\n this.instanceArray = [];\n var className = classNames(props.prefixCls, props.className, \"\".concat(props.prefixCls, \"-\").concat(props.mode));\n var domProps = {\n className: className,\n // role could be 'select' and by default set to menu\n role: props.role || 'menu'\n };\n\n if (props.id) {\n domProps.id = props.id;\n }\n\n if (props.focusable) {\n domProps.tabIndex = 0;\n domProps.onKeyDown = this.onKeyDown;\n }\n\n var prefixCls = props.prefixCls,\n eventKey = props.eventKey,\n visible = props.visible,\n level = props.level,\n mode = props.mode,\n overflowedIndicator = props.overflowedIndicator,\n theme = props.theme;\n menuAllProps.forEach(function (key) {\n return delete props[key];\n }); // Otherwise, the propagated click event will trigger another onClick\n\n delete props.onClick;\n return /*#__PURE__*/React.createElement(DOMWrap, _extends({}, props, {\n prefixCls: prefixCls,\n mode: mode,\n tag: \"ul\",\n level: level,\n theme: theme,\n visible: visible,\n overflowedIndicator: overflowedIndicator\n }, domProps), toArray(props.children).map(function (c, i) {\n return _this2.renderMenuItem(c, i, eventKey || '0-menu-');\n }));\n }\n }]);\n\n return SubPopupMenu;\n}(React.Component);\nSubPopupMenu.defaultProps = {\n prefixCls: 'rc-menu',\n className: '',\n mode: 'vertical',\n level: 1,\n inlineIndent: 24,\n visible: true,\n focusable: true,\n style: {},\n manualRef: noop\n};\nvar connected = connect()(SubPopupMenu);\nexport default connected;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"rc-util/es/warning\";\nexport function getMotion(_ref, _ref2, menuMode) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n _ref$defaultMotions = _ref.defaultMotions,\n defaultMotions = _ref$defaultMotions === void 0 ? {} : _ref$defaultMotions,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName;\n var switchingModeFromInline = _ref2.switchingModeFromInline;\n\n if (motion) {\n return motion;\n }\n\n if (_typeof(openAnimation) === 'object' && openAnimation) {\n warning(false, 'Object type of `openAnimation` is removed. Please use `motion` instead.');\n } else if (typeof openAnimation === 'string') {\n return {\n motionName: \"\".concat(prefixCls, \"-open-\").concat(openAnimation)\n };\n }\n\n if (openTransitionName) {\n return {\n motionName: openTransitionName\n };\n } // Default logic\n\n\n var defaultMotion = defaultMotions[menuMode];\n\n if (defaultMotion) {\n return defaultMotion;\n } // When mode switch from inline\n // submenu should hide without animation\n\n\n return switchingModeFromInline ? null : defaultMotions.other;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { Provider, create } from 'mini-store';\nimport omit from \"rc-util/es/omit\";\nimport SubPopupMenu, { getActiveKey } from './SubPopupMenu';\nimport { noop } from './util';\nimport { getMotion } from './utils/legacyUtil';\n\nvar Menu = /*#__PURE__*/function (_React$Component) {\n _inherits(Menu, _React$Component);\n\n var _super = _createSuper(Menu);\n\n function Menu(props) {\n var _this;\n\n _classCallCheck(this, Menu);\n\n _this = _super.call(this, props);\n\n _this.onSelect = function (selectInfo) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n if (props.selectable) {\n // root menu\n var _this$store$getState = _this.store.getState(),\n _selectedKeys = _this$store$getState.selectedKeys;\n\n var selectedKey = selectInfo.key;\n\n if (props.multiple) {\n _selectedKeys = _selectedKeys.concat([selectedKey]);\n } else {\n _selectedKeys = [selectedKey];\n }\n\n if (!('selectedKeys' in props)) {\n _this.store.setState({\n selectedKeys: _selectedKeys\n });\n }\n\n props.onSelect(_objectSpread(_objectSpread({}, selectInfo), {}, {\n selectedKeys: _selectedKeys\n }));\n }\n };\n\n _this.onClick = function (e) {\n var mode = _this.getRealMenuMode();\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n store = _assertThisInitialize2.store,\n onOpenChange = _assertThisInitialize2.props.onOpenChange;\n\n if (mode !== 'inline' && !('openKeys' in _this.props)) {\n // closing vertical popup submenu after click it\n store.setState({\n openKeys: []\n });\n onOpenChange([]);\n }\n\n _this.props.onClick(e);\n }; // onKeyDown needs to be exposed as a instance method\n // e.g., in rc-select, we need to navigate menu item while\n // current active item is rc-select input box rather than the menu itself\n\n\n _this.onKeyDown = function (e, callback) {\n _this.innerMenu.getWrappedInstance().onKeyDown(e, callback);\n };\n\n _this.onOpenChange = function (event) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n props = _assertThisInitialize3.props;\n\n var openKeys = _this.store.getState().openKeys.concat();\n\n var changed = false;\n\n var processSingle = function processSingle(e) {\n var oneChanged = false;\n\n if (e.open) {\n oneChanged = openKeys.indexOf(e.key) === -1;\n\n if (oneChanged) {\n openKeys.push(e.key);\n }\n } else {\n var index = openKeys.indexOf(e.key);\n oneChanged = index !== -1;\n\n if (oneChanged) {\n openKeys.splice(index, 1);\n }\n }\n\n changed = changed || oneChanged;\n };\n\n if (Array.isArray(event)) {\n // batch change call\n event.forEach(processSingle);\n } else {\n processSingle(event);\n }\n\n if (changed) {\n if (!('openKeys' in _this.props)) {\n _this.store.setState({\n openKeys: openKeys\n });\n }\n\n props.onOpenChange(openKeys);\n }\n };\n\n _this.onDeselect = function (selectInfo) {\n var _assertThisInitialize4 = _assertThisInitialized(_this),\n props = _assertThisInitialize4.props;\n\n if (props.selectable) {\n var _selectedKeys2 = _this.store.getState().selectedKeys.concat();\n\n var selectedKey = selectInfo.key;\n\n var index = _selectedKeys2.indexOf(selectedKey);\n\n if (index !== -1) {\n _selectedKeys2.splice(index, 1);\n }\n\n if (!('selectedKeys' in props)) {\n _this.store.setState({\n selectedKeys: _selectedKeys2\n });\n }\n\n props.onDeselect(_objectSpread(_objectSpread({}, selectInfo), {}, {\n selectedKeys: _selectedKeys2\n }));\n }\n }; // Restore vertical mode when menu is collapsed responsively when mounted\n // https://github.com/ant-design/ant-design/issues/13104\n // TODO: not a perfect solution,\n // looking a new way to avoid setting switchingModeFromInline in this situation\n\n\n _this.onMouseEnter = function (e) {\n _this.restoreModeVerticalFromInline();\n\n var onMouseEnter = _this.props.onMouseEnter;\n\n if (onMouseEnter) {\n onMouseEnter(e);\n }\n };\n\n _this.onTransitionEnd = function (e) {\n // when inlineCollapsed menu width animation finished\n // https://github.com/ant-design/ant-design/issues/12864\n var widthCollapsed = e.propertyName === 'width' && e.target === e.currentTarget; // Fix SVGElement e.target.className.indexOf is not a function\n // https://github.com/ant-design/ant-design/issues/15699\n\n var className = e.target.className; // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal,\n // unless during an animation.\n\n var classNameValue = Object.prototype.toString.call(className) === '[object SVGAnimatedString]' ? className.animVal : className; // Fix for ,\n // the width transition won't trigger when menu is collapsed\n // https://github.com/ant-design/ant-design-pro/issues/2783\n\n var iconScaled = e.propertyName === 'font-size' && classNameValue.indexOf('anticon') >= 0;\n\n if (widthCollapsed || iconScaled) {\n _this.restoreModeVerticalFromInline();\n }\n };\n\n _this.setInnerMenu = function (node) {\n _this.innerMenu = node;\n };\n\n _this.isRootMenu = true;\n var selectedKeys = props.defaultSelectedKeys;\n var openKeys = props.defaultOpenKeys;\n\n if ('selectedKeys' in props) {\n selectedKeys = props.selectedKeys || [];\n }\n\n if ('openKeys' in props) {\n openKeys = props.openKeys || [];\n }\n\n _this.store = create({\n selectedKeys: selectedKeys,\n openKeys: openKeys,\n activeKey: {\n '0-menu-': getActiveKey(props, props.activeKey)\n }\n });\n _this.state = {\n switchingModeFromInline: false,\n prevProps: props,\n inlineOpenKeys: [],\n store: _this.store\n };\n return _this;\n }\n\n _createClass(Menu, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateMiniStore();\n this.updateMenuDisplay();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n siderCollapsed = _this$props.siderCollapsed,\n inlineCollapsed = _this$props.inlineCollapsed,\n onOpenChange = _this$props.onOpenChange;\n\n if (!prevProps.inlineCollapsed && inlineCollapsed || !prevProps.siderCollapsed && siderCollapsed) {\n onOpenChange([]);\n }\n\n this.updateMiniStore();\n this.updateMenuDisplay();\n }\n }, {\n key: \"updateMenuDisplay\",\n value: function updateMenuDisplay() {\n var collapsedWidth = this.props.collapsedWidth,\n store = this.store,\n prevOpenKeys = this.prevOpenKeys; // https://github.com/ant-design/ant-design/issues/8587\n\n var hideMenu = this.getInlineCollapsed() && (collapsedWidth === 0 || collapsedWidth === '0' || collapsedWidth === '0px');\n\n if (hideMenu) {\n this.prevOpenKeys = store.getState().openKeys.concat();\n this.store.setState({\n openKeys: []\n });\n } else if (prevOpenKeys) {\n this.store.setState({\n openKeys: prevOpenKeys\n });\n this.prevOpenKeys = null;\n }\n }\n }, {\n key: \"getRealMenuMode\",\n value: function getRealMenuMode() {\n var mode = this.props.mode;\n var switchingModeFromInline = this.state.switchingModeFromInline;\n var inlineCollapsed = this.getInlineCollapsed();\n\n if (switchingModeFromInline && inlineCollapsed) {\n return 'inline';\n }\n\n return inlineCollapsed ? 'vertical' : mode;\n }\n }, {\n key: \"getInlineCollapsed\",\n value: function getInlineCollapsed() {\n var _this$props2 = this.props,\n inlineCollapsed = _this$props2.inlineCollapsed,\n siderCollapsed = _this$props2.siderCollapsed;\n\n if (siderCollapsed !== undefined) {\n return siderCollapsed;\n }\n\n return inlineCollapsed;\n }\n }, {\n key: \"restoreModeVerticalFromInline\",\n value: function restoreModeVerticalFromInline() {\n var switchingModeFromInline = this.state.switchingModeFromInline;\n\n if (switchingModeFromInline) {\n this.setState({\n switchingModeFromInline: false\n });\n }\n }\n }, {\n key: \"updateMiniStore\",\n value: function updateMiniStore() {\n if ('selectedKeys' in this.props) {\n this.store.setState({\n selectedKeys: this.props.selectedKeys || []\n });\n }\n\n if ('openKeys' in this.props) {\n this.store.setState({\n openKeys: this.props.openKeys || []\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var props = _objectSpread({}, omit(this.props, ['collapsedWidth', 'siderCollapsed', 'defaultMotions']));\n\n var mode = this.getRealMenuMode();\n props.className += \" \".concat(props.prefixCls, \"-root\");\n\n if (props.direction === 'rtl') {\n props.className += \" \".concat(props.prefixCls, \"-rtl\");\n }\n\n props = _objectSpread(_objectSpread({}, props), {}, {\n mode: mode,\n onClick: this.onClick,\n onOpenChange: this.onOpenChange,\n onDeselect: this.onDeselect,\n onSelect: this.onSelect,\n onMouseEnter: this.onMouseEnter,\n onTransitionEnd: this.onTransitionEnd,\n parentMenu: this,\n motion: getMotion(this.props, this.state, mode)\n });\n delete props.openAnimation;\n delete props.openTransitionName;\n return /*#__PURE__*/React.createElement(Provider, {\n store: this.store\n }, /*#__PURE__*/React.createElement(SubPopupMenu, _extends({}, props, {\n ref: this.setInnerMenu\n }), this.props.children));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var prevProps = prevState.prevProps,\n store = prevState.store;\n var prevStoreState = store.getState();\n var newStoreState = {};\n var newState = {\n prevProps: nextProps\n };\n\n if (prevProps.mode === 'inline' && nextProps.mode !== 'inline') {\n newState.switchingModeFromInline = true;\n }\n\n if ('openKeys' in nextProps) {\n newStoreState.openKeys = nextProps.openKeys || [];\n } else {\n // [Legacy] Old code will return after `openKeys` changed.\n // Not sure the reason, we should keep this logic still.\n if (nextProps.inlineCollapsed && !prevProps.inlineCollapsed || nextProps.siderCollapsed && !prevProps.siderCollapsed) {\n newState.switchingModeFromInline = true;\n newState.inlineOpenKeys = prevStoreState.openKeys;\n newStoreState.openKeys = [];\n }\n\n if (!nextProps.inlineCollapsed && prevProps.inlineCollapsed || !nextProps.siderCollapsed && prevProps.siderCollapsed) {\n newStoreState.openKeys = prevState.inlineOpenKeys;\n newState.inlineOpenKeys = [];\n }\n }\n\n if (Object.keys(newStoreState).length) {\n store.setState(newStoreState);\n }\n\n return newState;\n }\n }]);\n\n return Menu;\n}(React.Component);\n\nMenu.defaultProps = {\n selectable: true,\n onClick: noop,\n onSelect: noop,\n onOpenChange: noop,\n onDeselect: noop,\n defaultSelectedKeys: [],\n defaultOpenKeys: [],\n subMenuOpenDelay: 0.1,\n subMenuCloseDelay: 0.1,\n triggerSubMenuAction: 'hover',\n prefixCls: 'rc-menu',\n className: '',\n mode: 'vertical',\n style: {},\n builtinPlacements: {},\n overflowedIndicator: /*#__PURE__*/React.createElement(\"span\", null, \"\\xB7\\xB7\\xB7\")\n};\nexport default Menu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { connect } from 'mini-store';\nimport { noop, menuAllProps } from './util';\nexport var MenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(MenuItem, _React$Component);\n\n var _super = _createSuper(MenuItem);\n\n function MenuItem() {\n var _this;\n\n _classCallCheck(this, MenuItem);\n\n _this = _super.apply(this, arguments);\n\n _this.onKeyDown = function (e) {\n var keyCode = e.keyCode;\n\n if (keyCode === KeyCode.ENTER) {\n _this.onClick(e);\n\n return true;\n }\n\n return undefined;\n };\n\n _this.onMouseLeave = function (e) {\n var _this$props = _this.props,\n eventKey = _this$props.eventKey,\n onItemHover = _this$props.onItemHover,\n onMouseLeave = _this$props.onMouseLeave;\n onItemHover({\n key: eventKey,\n hover: false\n });\n onMouseLeave({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onMouseEnter = function (e) {\n var _this$props2 = _this.props,\n eventKey = _this$props2.eventKey,\n onItemHover = _this$props2.onItemHover,\n onMouseEnter = _this$props2.onMouseEnter;\n onItemHover({\n key: eventKey,\n hover: true\n });\n onMouseEnter({\n key: eventKey,\n domEvent: e\n });\n };\n\n _this.onClick = function (e) {\n var _this$props3 = _this.props,\n eventKey = _this$props3.eventKey,\n multiple = _this$props3.multiple,\n onClick = _this$props3.onClick,\n onSelect = _this$props3.onSelect,\n onDeselect = _this$props3.onDeselect,\n isSelected = _this$props3.isSelected;\n var info = {\n key: eventKey,\n keyPath: [eventKey],\n item: _assertThisInitialized(_this),\n domEvent: e\n };\n onClick(info);\n\n if (multiple) {\n if (isSelected) {\n onDeselect(info);\n } else {\n onSelect(info);\n }\n } else if (!isSelected) {\n onSelect(info);\n }\n };\n\n _this.saveNode = function (node) {\n _this.node = node;\n };\n\n return _this;\n }\n\n _createClass(MenuItem, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // invoke customized ref to expose component to mixin\n this.callRef();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.callRef();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var props = this.props;\n\n if (props.onDestroy) {\n props.onDestroy(props.eventKey);\n }\n }\n }, {\n key: \"getPrefixCls\",\n value: function getPrefixCls() {\n return \"\".concat(this.props.rootPrefixCls, \"-item\");\n }\n }, {\n key: \"getActiveClassName\",\n value: function getActiveClassName() {\n return \"\".concat(this.getPrefixCls(), \"-active\");\n }\n }, {\n key: \"getSelectedClassName\",\n value: function getSelectedClassName() {\n return \"\".concat(this.getPrefixCls(), \"-selected\");\n }\n }, {\n key: \"getDisabledClassName\",\n value: function getDisabledClassName() {\n return \"\".concat(this.getPrefixCls(), \"-disabled\");\n }\n }, {\n key: \"callRef\",\n value: function callRef() {\n if (this.props.manualRef) {\n this.props.manualRef(this);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var props = _objectSpread({}, this.props);\n\n var className = classNames(this.getPrefixCls(), props.className, (_classNames = {}, _defineProperty(_classNames, this.getActiveClassName(), !props.disabled && props.active), _defineProperty(_classNames, this.getSelectedClassName(), props.isSelected), _defineProperty(_classNames, this.getDisabledClassName(), props.disabled), _classNames));\n\n var attrs = _objectSpread(_objectSpread({}, props.attribute), {}, {\n title: typeof props.title === 'string' ? props.title : undefined,\n className: className,\n // set to menuitem by default\n role: props.role || 'menuitem',\n 'aria-disabled': props.disabled\n });\n\n if (props.role === 'option') {\n // overwrite to option\n attrs = _objectSpread(_objectSpread({}, attrs), {}, {\n role: 'option',\n 'aria-selected': props.isSelected\n });\n } else if (props.role === null || props.role === 'none') {\n // sometimes we want to specify role inside
  • element\n //
  • Link
  • would be a good example\n // in this case the role on
  • should be \"none\" to\n // remove the implied listitem role.\n // https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html\n attrs.role = 'none';\n } // In case that onClick/onMouseLeave/onMouseEnter is passed down from owner\n\n\n var mouseEvent = {\n onClick: props.disabled ? null : this.onClick,\n onMouseLeave: props.disabled ? null : this.onMouseLeave,\n onMouseEnter: props.disabled ? null : this.onMouseEnter\n };\n\n var style = _objectSpread({}, props.style);\n\n if (props.mode === 'inline') {\n if (props.direction === 'rtl') {\n style.paddingRight = props.inlineIndent * props.level;\n } else {\n style.paddingLeft = props.inlineIndent * props.level;\n }\n }\n\n menuAllProps.forEach(function (key) {\n return delete props[key];\n });\n delete props.direction;\n var icon = this.props.itemIcon;\n\n if (typeof this.props.itemIcon === 'function') {\n // TODO: This is a bug which should fixed after TS refactor\n icon = /*#__PURE__*/React.createElement(this.props.itemIcon, this.props);\n }\n\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, omit(props, ['onClick', 'onMouseEnter', 'onMouseLeave', 'onSelect']), attrs, mouseEvent, {\n style: style,\n ref: this.saveNode\n }), props.children, icon);\n }\n }]);\n\n return MenuItem;\n}(React.Component);\nMenuItem.isMenuItem = true;\nMenuItem.defaultProps = {\n onSelect: noop,\n onMouseEnter: noop,\n onMouseLeave: noop,\n manualRef: noop\n};\nvar connected = connect(function (_ref, _ref2) {\n var activeKey = _ref.activeKey,\n selectedKeys = _ref.selectedKeys;\n var eventKey = _ref2.eventKey,\n subMenuKey = _ref2.subMenuKey;\n return {\n active: activeKey[subMenuKey] === eventKey,\n // selectedKeys should be array in any circumstance\n // when it is not, we have fallback logic for https://github.com/ant-design/ant-design/issues/29430\n isSelected: Array.isArray(selectedKeys) ? selectedKeys.indexOf(eventKey) !== -1 : selectedKeys === eventKey\n };\n})(MenuItem);\nexport default connected;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { menuAllProps } from './util';\n\nvar MenuItemGroup = /*#__PURE__*/function (_React$Component) {\n _inherits(MenuItemGroup, _React$Component);\n\n var _super = _createSuper(MenuItemGroup);\n\n function MenuItemGroup() {\n var _this;\n\n _classCallCheck(this, MenuItemGroup);\n\n _this = _super.apply(this, arguments);\n\n _this.renderInnerMenuItem = function (item) {\n var _this$props = _this.props,\n renderMenuItem = _this$props.renderMenuItem,\n index = _this$props.index;\n return renderMenuItem(item, index, _this.props.subMenuKey);\n };\n\n return _this;\n }\n\n _createClass(MenuItemGroup, [{\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n var _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n rootPrefixCls = props.rootPrefixCls;\n var titleClassName = \"\".concat(rootPrefixCls, \"-item-group-title\");\n var listClassName = \"\".concat(rootPrefixCls, \"-item-group-list\");\n var title = props.title,\n children = props.children;\n menuAllProps.forEach(function (key) {\n return delete props[key];\n });\n delete props.direction;\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, props, {\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n className: \"\".concat(className, \" \").concat(rootPrefixCls, \"-item-group\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: titleClassName,\n title: typeof title === 'string' ? title : undefined\n }, title), /*#__PURE__*/React.createElement(\"ul\", {\n className: listClassName\n }, React.Children.map(children, this.renderInnerMenuItem)));\n }\n }]);\n\n return MenuItemGroup;\n}(React.Component);\n\nMenuItemGroup.isMenuItemGroup = true;\nMenuItemGroup.defaultProps = {\n disabled: true\n};\nexport default MenuItemGroup;","import * as React from 'react';\n\nvar Divider = function Divider(_ref) {\n var className = _ref.className,\n rootPrefixCls = _ref.rootPrefixCls,\n style = _ref.style;\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(className, \" \").concat(rootPrefixCls, \"-item-divider\"),\n style: style\n });\n};\n\nDivider.defaultProps = {\n // To fix keyboard UX.\n disabled: true,\n className: '',\n style: {}\n};\nexport default Divider;","import Menu from './Menu';\nimport SubMenu from './SubMenu';\nimport MenuItem from './MenuItem';\nimport MenuItemGroup from './MenuItemGroup';\nimport Divider from './Divider';\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider };\nexport default Menu;","import { createContext } from 'react';\nvar MenuContext = /*#__PURE__*/createContext({\n inlineCollapsed: false\n});\nexport default MenuContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { SubMenu as RcSubMenu } from 'rc-menu';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport MenuContext from './MenuContext';\nimport { isValidElement } from '../_util/reactNode';\n\nvar SubMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(SubMenu, _React$Component);\n\n var _super = _createSuper(SubMenu);\n\n function SubMenu() {\n _classCallCheck(this, SubMenu);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SubMenu, [{\n key: \"renderTitle\",\n value: function renderTitle(inlineCollapsed) {\n var _this$props = this.props,\n icon = _this$props.icon,\n title = _this$props.title,\n level = _this$props.level,\n rootPrefixCls = _this$props.rootPrefixCls;\n\n if (!icon) {\n return inlineCollapsed && level === 1 && title && typeof title === 'string' ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(rootPrefixCls, \"-inline-collapsed-noicon\")\n }, title.charAt(0)) : title;\n } // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性,则内部包裹一个 span\n // ref: https://github.com/ant-design/ant-design/pull/23456\n\n\n var titleIsSpan = isValidElement(title) && title.type === 'span';\n return /*#__PURE__*/React.createElement(React.Fragment, null, icon, titleIsSpan ? title : /*#__PURE__*/React.createElement(\"span\", null, title));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var _this$props2 = this.props,\n rootPrefixCls = _this$props2.rootPrefixCls,\n popupClassName = _this$props2.popupClassName;\n return /*#__PURE__*/React.createElement(MenuContext.Consumer, null, function (_ref) {\n var inlineCollapsed = _ref.inlineCollapsed,\n antdMenuTheme = _ref.antdMenuTheme;\n return /*#__PURE__*/React.createElement(RcSubMenu, _extends({}, omit(_this.props, ['icon']), {\n title: _this.renderTitle(inlineCollapsed),\n popupClassName: classNames(rootPrefixCls, \"\".concat(rootPrefixCls, \"-\").concat(antdMenuTheme), popupClassName)\n }));\n });\n }\n }]);\n\n return SubMenu;\n}(React.Component);\n\nSubMenu.contextType = MenuContext; // fix issue:https://github.com/ant-design/ant-design/issues/8666\n\nSubMenu.isSubMenu = 1;\nexport default SubMenu;","// This icon file is generated automatically.\nvar BarsOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"0 0 1024 1024\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z\"\n }\n }]\n },\n \"name\": \"bars\",\n \"theme\": \"outlined\"\n};\nexport default BarsOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport BarsOutlinedSvg from \"@ant-design/icons-svg/es/asn/BarsOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar BarsOutlined = function BarsOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: BarsOutlinedSvg\n }));\n};\n\nBarsOutlined.displayName = 'BarsOutlined';\nexport default /*#__PURE__*/React.forwardRef(BarsOutlined);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nexport var LayoutContext = /*#__PURE__*/React.createContext({\n siderHook: {\n addSider: function addSider() {\n return null;\n },\n removeSider: function removeSider() {\n return null;\n }\n }\n});\n\nfunction generator(_ref) {\n var suffixCls = _ref.suffixCls,\n tagName = _ref.tagName,\n displayName = _ref.displayName;\n return function (BasicComponent) {\n var Adapter = function Adapter(props) {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n\n var customizePrefixCls = props.prefixCls;\n var prefixCls = getPrefixCls(suffixCls, customizePrefixCls);\n return /*#__PURE__*/React.createElement(BasicComponent, _extends({\n prefixCls: prefixCls,\n tagName: tagName\n }, props));\n };\n\n Adapter.displayName = displayName;\n return Adapter;\n };\n}\n\nvar Basic = function Basic(props) {\n var prefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n tagName = props.tagName,\n others = __rest(props, [\"prefixCls\", \"className\", \"children\", \"tagName\"]);\n\n var classString = classNames(prefixCls, className);\n return /*#__PURE__*/React.createElement(tagName, _extends({\n className: classString\n }, others), children);\n};\n\nvar BasicLayout = function BasicLayout(props) {\n var _classNames;\n\n var _React$useContext2 = React.useContext(ConfigContext),\n direction = _React$useContext2.direction;\n\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n siders = _React$useState2[0],\n setSiders = _React$useState2[1];\n\n var prefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n hasSider = props.hasSider,\n Tag = props.tagName,\n others = __rest(props, [\"prefixCls\", \"className\", \"children\", \"hasSider\", \"tagName\"]);\n\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-sider\"), typeof hasSider === 'boolean' ? hasSider : siders.length > 0), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(LayoutContext.Provider, {\n value: {\n siderHook: {\n addSider: function addSider(id) {\n setSiders(function (prev) {\n return [].concat(_toConsumableArray(prev), [id]);\n });\n },\n removeSider: function removeSider(id) {\n setSiders(function (prev) {\n return prev.filter(function (currentId) {\n return currentId !== id;\n });\n });\n }\n }\n }\n }, /*#__PURE__*/React.createElement(Tag, _extends({\n className: classString\n }, others), children));\n};\n\nvar Layout = generator({\n suffixCls: 'layout',\n tagName: 'section',\n displayName: 'Layout'\n})(BasicLayout);\nvar Header = generator({\n suffixCls: 'layout-header',\n tagName: 'header',\n displayName: 'Header'\n})(Basic);\nvar Footer = generator({\n suffixCls: 'layout-footer',\n tagName: 'footer',\n displayName: 'Footer'\n})(Basic);\nvar Content = generator({\n suffixCls: 'layout-content',\n tagName: 'main',\n displayName: 'Content'\n})(Basic);\nexport { Header, Footer, Content };\nexport default Layout;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { useContext, useRef, useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport BarsOutlined from \"@ant-design/icons/es/icons/BarsOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport { LayoutContext } from './layout';\nimport { ConfigContext } from '../config-provider';\nimport isNumeric from '../_util/isNumeric';\nvar dimensionMaxMap = {\n xs: '479.98px',\n sm: '575.98px',\n md: '767.98px',\n lg: '991.98px',\n xl: '1199.98px',\n xxl: '1599.98px'\n};\nexport var SiderContext = /*#__PURE__*/React.createContext({});\n\nvar generateId = function () {\n var i = 0;\n return function () {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n i += 1;\n return \"\".concat(prefix).concat(i);\n };\n}();\n\nvar Sider = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n trigger = _a.trigger,\n children = _a.children,\n _a$defaultCollapsed = _a.defaultCollapsed,\n defaultCollapsed = _a$defaultCollapsed === void 0 ? false : _a$defaultCollapsed,\n _a$theme = _a.theme,\n theme = _a$theme === void 0 ? 'dark' : _a$theme,\n _a$style = _a.style,\n style = _a$style === void 0 ? {} : _a$style,\n _a$collapsible = _a.collapsible,\n collapsible = _a$collapsible === void 0 ? false : _a$collapsible,\n _a$reverseArrow = _a.reverseArrow,\n reverseArrow = _a$reverseArrow === void 0 ? false : _a$reverseArrow,\n _a$width = _a.width,\n width = _a$width === void 0 ? 200 : _a$width,\n _a$collapsedWidth = _a.collapsedWidth,\n collapsedWidth = _a$collapsedWidth === void 0 ? 80 : _a$collapsedWidth,\n zeroWidthTriggerStyle = _a.zeroWidthTriggerStyle,\n breakpoint = _a.breakpoint,\n onCollapse = _a.onCollapse,\n onBreakpoint = _a.onBreakpoint,\n props = __rest(_a, [\"prefixCls\", \"className\", \"trigger\", \"children\", \"defaultCollapsed\", \"theme\", \"style\", \"collapsible\", \"reverseArrow\", \"width\", \"collapsedWidth\", \"zeroWidthTriggerStyle\", \"breakpoint\", \"onCollapse\", \"onBreakpoint\"]);\n\n var _useContext = useContext(LayoutContext),\n siderHook = _useContext.siderHook;\n\n var _useState = useState('collapsed' in props ? props.collapsed : defaultCollapsed),\n _useState2 = _slicedToArray(_useState, 2),\n collapsed = _useState2[0],\n setCollapsed = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n below = _useState4[0],\n setBelow = _useState4[1];\n\n useEffect(function () {\n if ('collapsed' in props) {\n setCollapsed(props.collapsed);\n }\n }, [props.collapsed]);\n\n var handleSetCollapsed = function handleSetCollapsed(value, type) {\n if (!('collapsed' in props)) {\n setCollapsed(value);\n }\n\n onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(value, type);\n }; // ========================= Responsive =========================\n\n\n var responsiveHandlerRef = useRef();\n\n responsiveHandlerRef.current = function (mql) {\n setBelow(mql.matches);\n onBreakpoint === null || onBreakpoint === void 0 ? void 0 : onBreakpoint(mql.matches);\n\n if (collapsed !== mql.matches) {\n handleSetCollapsed(mql.matches, 'responsive');\n }\n };\n\n useEffect(function () {\n function responsiveHandler(mql) {\n return responsiveHandlerRef.current(mql);\n }\n\n var mql;\n\n if (typeof window !== 'undefined') {\n var _window = window,\n matchMedia = _window.matchMedia;\n\n if (matchMedia && breakpoint && breakpoint in dimensionMaxMap) {\n mql = matchMedia(\"(max-width: \".concat(dimensionMaxMap[breakpoint], \")\"));\n\n try {\n mql.addEventListener('change', responsiveHandler);\n } catch (error) {\n mql.addListener(responsiveHandler);\n }\n\n responsiveHandler(mql);\n }\n }\n\n return function () {\n try {\n mql === null || mql === void 0 ? void 0 : mql.removeEventListener('change', responsiveHandler);\n } catch (error) {\n mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler);\n }\n };\n }, []);\n useEffect(function () {\n var uniqueId = generateId('ant-sider-');\n siderHook.addSider(uniqueId);\n return function () {\n return siderHook.removeSider(uniqueId);\n };\n }, []);\n\n var toggle = function toggle() {\n handleSetCollapsed(!collapsed, 'clickTrigger');\n };\n\n var _useContext2 = useContext(ConfigContext),\n getPrefixCls = _useContext2.getPrefixCls;\n\n var renderSider = function renderSider() {\n var _classNames;\n\n var prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n var divProps = omit(props, ['collapsed']);\n var rawWidth = collapsed ? collapsedWidth : width; // use \"px\" as fallback unit for width\n\n var siderWidth = isNumeric(rawWidth) ? \"\".concat(rawWidth, \"px\") : String(rawWidth); // special trigger when collapsedWidth == 0\n\n var zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? /*#__PURE__*/React.createElement(\"span\", {\n onClick: toggle,\n className: classNames(\"\".concat(prefixCls, \"-zero-width-trigger\"), \"\".concat(prefixCls, \"-zero-width-trigger-\").concat(reverseArrow ? 'right' : 'left')),\n style: zeroWidthTriggerStyle\n }, trigger || /*#__PURE__*/React.createElement(BarsOutlined, null)) : null;\n var iconObj = {\n expanded: reverseArrow ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null),\n collapsed: reverseArrow ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null)\n };\n var status = collapsed ? 'collapsed' : 'expanded';\n var defaultTrigger = iconObj[status];\n var triggerDom = trigger !== null ? zeroWidthTrigger || /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-trigger\"),\n onClick: toggle,\n style: {\n width: siderWidth\n }\n }, trigger || defaultTrigger) : null;\n\n var divStyle = _extends(_extends({}, style), {\n flex: \"0 0 \".concat(siderWidth),\n maxWidth: siderWidth,\n minWidth: siderWidth,\n width: siderWidth\n });\n\n var siderCls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(theme), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-collapsed\"), !!collapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-trigger\"), collapsible && trigger !== null && !zeroWidthTrigger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-below\"), !!below), _defineProperty(_classNames, \"\".concat(prefixCls, \"-zero-width\"), parseFloat(siderWidth) === 0), _classNames), className);\n return /*#__PURE__*/React.createElement(\"aside\", _extends({\n className: siderCls\n }, divProps, {\n style: divStyle,\n ref: ref\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-children\")\n }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null);\n };\n\n return /*#__PURE__*/React.createElement(SiderContext.Provider, {\n value: {\n siderCollapsed: collapsed,\n collapsedWidth: collapsedWidth\n }\n }, renderSider());\n});\nSider.displayName = 'Sider';\nexport default Sider;","var isNumeric = function isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n};\n\nexport default isNumeric;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport { Item } from 'rc-menu';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport classNames from 'classnames';\nimport MenuContext from './MenuContext';\nimport Tooltip from '../tooltip';\nimport { SiderContext } from '../layout/Sider';\nimport { isValidElement, cloneElement } from '../_util/reactNode';\n\nvar MenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(MenuItem, _React$Component);\n\n var _super = _createSuper(MenuItem);\n\n function MenuItem() {\n var _this;\n\n _classCallCheck(this, MenuItem);\n\n _this = _super.apply(this, arguments);\n\n _this.renderItem = function (_ref) {\n var siderCollapsed = _ref.siderCollapsed;\n var _this$props = _this.props,\n level = _this$props.level,\n className = _this$props.className,\n children = _this$props.children,\n rootPrefixCls = _this$props.rootPrefixCls;\n\n var _a = _this.props,\n title = _a.title,\n icon = _a.icon,\n danger = _a.danger,\n rest = __rest(_a, [\"title\", \"icon\", \"danger\"]);\n\n return /*#__PURE__*/React.createElement(MenuContext.Consumer, null, function (_ref2) {\n var _classNames;\n\n var inlineCollapsed = _ref2.inlineCollapsed,\n direction = _ref2.direction;\n\n var _a;\n\n var tooltipTitle = title;\n\n if (typeof title === 'undefined') {\n tooltipTitle = level === 1 ? children : '';\n } else if (title === false) {\n tooltipTitle = '';\n }\n\n var tooltipProps = {\n title: tooltipTitle\n };\n\n if (!siderCollapsed && !inlineCollapsed) {\n tooltipProps.title = null; // Reset `visible` to fix control mode tooltip display not correct\n // ref: https://github.com/ant-design/ant-design/issues/16742\n\n tooltipProps.visible = false;\n }\n\n var childrenLength = toArray(children).length;\n return /*#__PURE__*/React.createElement(Tooltip, _extends({}, tooltipProps, {\n placement: direction === 'rtl' ? 'left' : 'right',\n overlayClassName: \"\".concat(rootPrefixCls, \"-inline-collapsed-tooltip\")\n }), /*#__PURE__*/React.createElement(Item, _extends({}, rest, {\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(rootPrefixCls, \"-item-danger\"), danger), _defineProperty(_classNames, \"\".concat(rootPrefixCls, \"-item-only-child\"), (icon ? childrenLength + 1 : childrenLength) === 1), _classNames), className),\n title: title\n }), cloneElement(icon, {\n className: classNames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', \"\".concat(rootPrefixCls, \"-item-icon\"))\n }), _this.renderItemChildren(inlineCollapsed)));\n });\n };\n\n return _this;\n }\n\n _createClass(MenuItem, [{\n key: \"renderItemChildren\",\n value: function renderItemChildren(inlineCollapsed) {\n var _this$props2 = this.props,\n icon = _this$props2.icon,\n children = _this$props2.children,\n level = _this$props2.level,\n rootPrefixCls = _this$props2.rootPrefixCls; // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性,则内部包裹一个 span\n // ref: https://github.com/ant-design/ant-design/pull/23456\n\n if (!icon || isValidElement(children) && children.type === 'span') {\n if (children && inlineCollapsed && level === 1 && typeof children === 'string') {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(rootPrefixCls, \"-inline-collapsed-noicon\")\n }, children.charAt(0));\n }\n\n return children;\n }\n\n return /*#__PURE__*/React.createElement(\"span\", null, children);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(SiderContext.Consumer, null, this.renderItem);\n }\n }]);\n\n return MenuItem;\n}(React.Component);\n\nexport { MenuItem as default };\nMenuItem.isMenuItem = true;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport RcMenu, { Divider, ItemGroup } from 'rc-menu';\nimport classNames from 'classnames';\nimport SubMenu from './SubMenu';\nimport Item from './MenuItem';\nimport { ConfigConsumer } from '../config-provider';\nimport devWarning from '../_util/devWarning';\nimport { SiderContext } from '../layout/Sider';\nimport collapseMotion from '../_util/motion';\nimport { cloneElement } from '../_util/reactNode';\nimport MenuContext from './MenuContext';\n\nvar InternalMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(InternalMenu, _React$Component);\n\n var _super = _createSuper(InternalMenu);\n\n function InternalMenu(props) {\n var _this;\n\n _classCallCheck(this, InternalMenu);\n\n _this = _super.call(this, props);\n\n _this.renderMenu = function (_ref) {\n var getPopupContainer = _ref.getPopupContainer,\n getPrefixCls = _ref.getPrefixCls,\n direction = _ref.direction;\n var rootPrefixCls = getPrefixCls();\n var _this$props = _this.props,\n customizePrefixCls = _this$props.prefixCls,\n className = _this$props.className,\n theme = _this$props.theme,\n expandIcon = _this$props.expandIcon;\n var defaultMotions = {\n horizontal: {\n motionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n },\n inline: collapseMotion,\n other: {\n motionName: \"\".concat(rootPrefixCls, \"-zoom-big\")\n }\n };\n var prefixCls = getPrefixCls('menu', customizePrefixCls);\n var menuClassName = classNames(\"\".concat(prefixCls, \"-\").concat(theme), _defineProperty({}, \"\".concat(prefixCls, \"-inline-collapsed\"), _this.getInlineCollapsed()), className);\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: {\n inlineCollapsed: _this.getInlineCollapsed() || false,\n antdMenuTheme: theme,\n direction: direction\n }\n }, /*#__PURE__*/React.createElement(RcMenu, _extends({\n getPopupContainer: getPopupContainer\n }, _this.props, {\n className: menuClassName,\n prefixCls: prefixCls,\n direction: direction,\n defaultMotions: defaultMotions,\n expandIcon: cloneElement(expandIcon, {\n className: \"\".concat(prefixCls, \"-submenu-expand-icon\")\n })\n })));\n };\n\n devWarning(!('inlineCollapsed' in props && props.mode !== 'inline'), 'Menu', '`inlineCollapsed` should only be used when `mode` is inline.');\n devWarning(!(props.siderCollapsed !== undefined && 'inlineCollapsed' in props), 'Menu', '`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.');\n return _this;\n }\n\n _createClass(InternalMenu, [{\n key: \"getInlineCollapsed\",\n value: function getInlineCollapsed() {\n var _this$props2 = this.props,\n inlineCollapsed = _this$props2.inlineCollapsed,\n siderCollapsed = _this$props2.siderCollapsed;\n\n if (siderCollapsed !== undefined) {\n return siderCollapsed;\n }\n\n return inlineCollapsed;\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, this.renderMenu);\n }\n }]);\n\n return InternalMenu;\n}(React.Component);\n\nInternalMenu.defaultProps = {\n className: '',\n theme: 'light',\n focusable: false\n}; // We should keep this as ref-able\n\nvar Menu = /*#__PURE__*/function (_React$Component2) {\n _inherits(Menu, _React$Component2);\n\n var _super2 = _createSuper(Menu);\n\n function Menu() {\n _classCallCheck(this, Menu);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(Menu, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return /*#__PURE__*/React.createElement(SiderContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(InternalMenu, _extends({}, _this2.props, context));\n });\n }\n }]);\n\n return Menu;\n}(React.Component);\n\nMenu.Divider = Divider;\nMenu.Item = Item;\nMenu.SubMenu = SubMenu;\nMenu.ItemGroup = ItemGroup;\nexport default Menu;","/* istanbul ignore next */\n\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction ColumnGroup(_) {\n return null;\n}\n\nexport default ColumnGroup;","/* istanbul ignore next */\n\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction Column(_) {\n return null;\n}\n\nexport default Column;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar INTERNAL_KEY_PREFIX = 'RC_TABLE_KEY';\n\nfunction toArray(arr) {\n if (arr === undefined || arr === null) {\n return [];\n }\n\n return Array.isArray(arr) ? arr : [arr];\n}\n\nexport function getPathValue(record, path) {\n // Skip if path is empty\n if (!path && typeof path !== 'number') {\n return record;\n }\n\n var pathList = toArray(path);\n var current = record;\n\n for (var i = 0; i < pathList.length; i += 1) {\n if (!current) {\n return null;\n }\n\n var prop = pathList[i];\n current = current[prop];\n }\n\n return current;\n}\nexport function getColumnsKey(columns) {\n var columnKeys = [];\n var keys = {};\n columns.forEach(function (column) {\n var _ref = column || {},\n key = _ref.key,\n dataIndex = _ref.dataIndex;\n\n var mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX;\n\n while (keys[mergedKey]) {\n mergedKey = \"\".concat(mergedKey, \"_next\");\n }\n\n keys[mergedKey] = true;\n columnKeys.push(mergedKey);\n });\n return columnKeys;\n}\nexport function mergeObject() {\n var merged = {};\n /* eslint-disable no-param-reassign */\n\n function fillProps(obj, clone) {\n if (clone) {\n Object.keys(clone).forEach(function (key) {\n var value = clone[key];\n\n if (value && _typeof(value) === 'object') {\n obj[key] = obj[key] || {};\n fillProps(obj[key], value);\n } else {\n obj[key] = value;\n }\n });\n }\n }\n /* eslint-enable */\n\n\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n objects.forEach(function (clone) {\n fillProps(merged, clone);\n });\n return merged;\n}\nexport function validateValue(val) {\n return val !== null && val !== undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { supportRef } from \"rc-util/es/ref\";\nimport { getPathValue } from '../utils/valueUtil';\n\nfunction isRenderCell(data) {\n return data && _typeof(data) === 'object' && !Array.isArray(data) && ! /*#__PURE__*/React.isValidElement(data);\n}\n\nfunction isRefComponent(component) {\n // String tag component also support ref\n if (typeof component === 'string') {\n return true;\n }\n\n return supportRef(component);\n}\n\nfunction Cell(_ref, ref) {\n var _classNames;\n\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n record = _ref.record,\n index = _ref.index,\n dataIndex = _ref.dataIndex,\n render = _ref.render,\n children = _ref.children,\n _ref$component = _ref.component,\n Component = _ref$component === void 0 ? 'td' : _ref$component,\n colSpan = _ref.colSpan,\n rowSpan = _ref.rowSpan,\n fixLeft = _ref.fixLeft,\n fixRight = _ref.fixRight,\n firstFixLeft = _ref.firstFixLeft,\n lastFixLeft = _ref.lastFixLeft,\n firstFixRight = _ref.firstFixRight,\n lastFixRight = _ref.lastFixRight,\n appendNode = _ref.appendNode,\n _ref$additionalProps = _ref.additionalProps,\n additionalProps = _ref$additionalProps === void 0 ? {} : _ref$additionalProps,\n ellipsis = _ref.ellipsis,\n align = _ref.align,\n rowType = _ref.rowType,\n isSticky = _ref.isSticky;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\"); // ==================== Child Node ====================\n\n var cellProps;\n var childNode;\n\n if (children) {\n childNode = children;\n } else {\n var value = getPathValue(record, dataIndex); // Customize render node\n\n childNode = value;\n\n if (render) {\n var renderData = render(value, record, index);\n\n if (isRenderCell(renderData)) {\n childNode = renderData.children;\n cellProps = renderData.props;\n } else {\n childNode = renderData;\n }\n }\n } // Not crash if final `childNode` is not validate ReactNode\n\n\n if (_typeof(childNode) === 'object' && !Array.isArray(childNode) && ! /*#__PURE__*/React.isValidElement(childNode)) {\n childNode = null;\n }\n\n if (ellipsis && (lastFixLeft || firstFixRight)) {\n childNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(cellPrefixCls, \"-content\")\n }, childNode);\n }\n\n var _ref2 = cellProps || {},\n cellColSpan = _ref2.colSpan,\n cellRowSpan = _ref2.rowSpan,\n cellStyle = _ref2.style,\n cellClassName = _ref2.className,\n restCellProps = _objectWithoutProperties(_ref2, [\"colSpan\", \"rowSpan\", \"style\", \"className\"]);\n\n var mergedColSpan = cellColSpan !== undefined ? cellColSpan : colSpan;\n var mergedRowSpan = cellRowSpan !== undefined ? cellRowSpan : rowSpan;\n\n if (mergedColSpan === 0 || mergedRowSpan === 0) {\n return null;\n } // ====================== Fixed =======================\n\n\n var fixedStyle = {};\n var isFixLeft = typeof fixLeft === 'number';\n var isFixRight = typeof fixRight === 'number';\n\n if (isFixLeft) {\n fixedStyle.position = 'sticky';\n fixedStyle.left = fixLeft;\n }\n\n if (isFixRight) {\n fixedStyle.position = 'sticky';\n fixedStyle.right = fixRight;\n } // ====================== Align =======================\n\n\n var alignStyle = {};\n\n if (align) {\n alignStyle.textAlign = align;\n } // ====================== Render ======================\n\n\n var title;\n var ellipsisConfig = ellipsis === true ? {\n showTitle: true\n } : ellipsis;\n\n if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {\n if (typeof childNode === 'string' || typeof childNode === 'number') {\n title = childNode.toString();\n } else if ( /*#__PURE__*/React.isValidElement(childNode) && typeof childNode.props.children === 'string') {\n title = childNode.props.children;\n }\n }\n\n var componentProps = _objectSpread(_objectSpread(_objectSpread({\n title: title\n }, restCellProps), additionalProps), {}, {\n colSpan: mergedColSpan && mergedColSpan !== 1 ? mergedColSpan : null,\n rowSpan: mergedRowSpan && mergedRowSpan !== 1 ? mergedRowSpan : null,\n className: classNames(cellPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left\"), isFixLeft), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left-first\"), firstFixLeft), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left-last\"), lastFixLeft), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-right\"), isFixRight), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-right-first\"), firstFixRight), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-right-last\"), lastFixRight), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-ellipsis\"), ellipsis), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-with-append\"), appendNode), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-sticky\"), (isFixLeft || isFixRight) && isSticky), _classNames), additionalProps.className, cellClassName),\n style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, additionalProps.style), alignStyle), fixedStyle), cellStyle),\n ref: isRefComponent(Component) ? ref : null\n });\n\n return /*#__PURE__*/React.createElement(Component, componentProps, appendNode, childNode);\n}\n\nvar RefCell = /*#__PURE__*/React.forwardRef(Cell);\nRefCell.displayName = 'Cell';\nvar MemoCell = /*#__PURE__*/React.memo(RefCell, function (prev, next) {\n if (next.shouldCellUpdate) {\n return !next.shouldCellUpdate(next.record, prev.record);\n }\n\n return false;\n});\nexport default MemoCell;","import * as React from 'react';\nvar TableContext = /*#__PURE__*/React.createContext(null);\nexport default TableContext;","export function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets, direction) {\n var startColumn = columns[colStart] || {};\n var endColumn = columns[colEnd] || {};\n var fixLeft;\n var fixRight;\n\n if (startColumn.fixed === 'left') {\n fixLeft = stickyOffsets.left[colStart];\n } else if (endColumn.fixed === 'right') {\n fixRight = stickyOffsets.right[colEnd];\n }\n\n var lastFixLeft = false;\n var firstFixRight = false;\n var lastFixRight = false;\n var firstFixLeft = false;\n var nextColumn = columns[colEnd + 1];\n var prevColumn = columns[colStart - 1];\n\n if (direction === 'rtl') {\n if (fixLeft !== undefined) {\n var prevFixLeft = prevColumn && prevColumn.fixed === 'left';\n firstFixLeft = !prevFixLeft;\n } else if (fixRight !== undefined) {\n var nextFixRight = nextColumn && nextColumn.fixed === 'right';\n lastFixRight = !nextFixRight;\n }\n } else if (fixLeft !== undefined) {\n var nextFixLeft = nextColumn && nextColumn.fixed === 'left';\n lastFixLeft = !nextFixLeft;\n } else if (fixRight !== undefined) {\n var prevFixRight = prevColumn && prevColumn.fixed === 'right';\n firstFixRight = !prevFixRight;\n }\n\n return {\n fixLeft: fixLeft,\n fixRight: fixRight,\n lastFixLeft: lastFixLeft,\n firstFixRight: firstFixRight,\n lastFixRight: lastFixRight,\n firstFixLeft: firstFixLeft,\n isSticky: stickyOffsets.isSticky\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nimport { getCellFixedInfo } from '../utils/fixUtil';\nimport { getColumnsKey } from '../utils/valueUtil';\n\nfunction HeaderRow(_ref) {\n var cells = _ref.cells,\n stickyOffsets = _ref.stickyOffsets,\n flattenColumns = _ref.flattenColumns,\n RowComponent = _ref.rowComponent,\n CellComponent = _ref.cellComponent,\n onHeaderRow = _ref.onHeaderRow,\n index = _ref.index;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n direction = _React$useContext.direction;\n\n var rowProps;\n\n if (onHeaderRow) {\n rowProps = onHeaderRow(cells.map(function (cell) {\n return cell.column;\n }), index);\n }\n\n var columnsKey = getColumnsKey(cells.map(function (cell) {\n return cell.column;\n }));\n return /*#__PURE__*/React.createElement(RowComponent, rowProps, cells.map(function (cell, cellIndex) {\n var column = cell.column;\n var fixedInfo = getCellFixedInfo(cell.colStart, cell.colEnd, flattenColumns, stickyOffsets, direction);\n var additionalProps;\n\n if (column && column.onHeaderCell) {\n additionalProps = cell.column.onHeaderCell(column);\n }\n\n return /*#__PURE__*/React.createElement(Cell, _extends({}, cell, {\n ellipsis: column.ellipsis,\n align: column.align,\n component: CellComponent,\n prefixCls: prefixCls,\n key: columnsKey[cellIndex]\n }, fixedInfo, {\n additionalProps: additionalProps,\n rowType: \"header\"\n }));\n }));\n}\n\nHeaderRow.displayName = 'HeaderRow';\nexport default HeaderRow;","import * as React from 'react';\nimport HeaderRow from './HeaderRow';\nimport TableContext from '../context/TableContext';\n\nfunction parseHeaderRows(rootColumns) {\n var rows = [];\n\n function fillRowCells(columns, colIndex) {\n var rowIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; // Init rows\n\n rows[rowIndex] = rows[rowIndex] || [];\n var currentColIndex = colIndex;\n var colSpans = columns.filter(Boolean).map(function (column) {\n var cell = {\n key: column.key,\n className: column.className || '',\n children: column.title,\n column: column,\n colStart: currentColIndex\n };\n var colSpan = 1;\n var subColumns = column.children;\n\n if (subColumns && subColumns.length > 0) {\n colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce(function (total, count) {\n return total + count;\n }, 0);\n cell.hasSubColumns = true;\n }\n\n if ('colSpan' in column) {\n colSpan = column.colSpan;\n }\n\n if ('rowSpan' in column) {\n cell.rowSpan = column.rowSpan;\n }\n\n cell.colSpan = colSpan;\n cell.colEnd = cell.colStart + colSpan - 1;\n rows[rowIndex].push(cell);\n currentColIndex += colSpan;\n return colSpan;\n });\n return colSpans;\n } // Generate `rows` cell data\n\n\n fillRowCells(rootColumns, 0); // Handle `rowSpan`\n\n var rowCount = rows.length;\n\n var _loop = function _loop(rowIndex) {\n rows[rowIndex].forEach(function (cell) {\n if (!('rowSpan' in cell) && !cell.hasSubColumns) {\n // eslint-disable-next-line no-param-reassign\n cell.rowSpan = rowCount - rowIndex;\n }\n });\n };\n\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n _loop(rowIndex);\n }\n\n return rows;\n}\n\nfunction Header(_ref) {\n var stickyOffsets = _ref.stickyOffsets,\n columns = _ref.columns,\n flattenColumns = _ref.flattenColumns,\n onHeaderRow = _ref.onHeaderRow;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n getComponent = _React$useContext.getComponent;\n\n var rows = React.useMemo(function () {\n return parseHeaderRows(columns);\n }, [columns]);\n var WrapperComponent = getComponent(['header', 'wrapper'], 'thead');\n var trComponent = getComponent(['header', 'row'], 'tr');\n var thComponent = getComponent(['header', 'cell'], 'th');\n return /*#__PURE__*/React.createElement(WrapperComponent, {\n className: \"\".concat(prefixCls, \"-thead\")\n }, rows.map(function (row, rowIndex) {\n var rowNode = /*#__PURE__*/React.createElement(HeaderRow, {\n key: rowIndex,\n flattenColumns: flattenColumns,\n cells: row,\n stickyOffsets: stickyOffsets,\n rowComponent: trComponent,\n cellComponent: thComponent,\n onHeaderRow: onHeaderRow,\n index: rowIndex\n });\n return rowNode;\n }));\n}\n\nexport default Header;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport warning from \"rc-util/es/warning\";\nexport var INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';\nexport function getExpandableProps(props) {\n var expandable = props.expandable,\n legacyExpandableConfig = _objectWithoutProperties(props, [\"expandable\"]);\n\n if ('expandable' in props) {\n return _objectSpread(_objectSpread({}, legacyExpandableConfig), expandable);\n }\n\n if (process.env.NODE_ENV !== 'production' && ['indentSize', 'expandedRowKeys', 'defaultExpandedRowKeys', 'defaultExpandAllRows', 'expandedRowRender', 'expandRowByClick', 'expandIcon', 'onExpand', 'onExpandedRowsChange', 'expandedRowClassName', 'expandIconColumnIndex'].some(function (prop) {\n return prop in props;\n })) {\n warning(false, 'expanded related props have been moved into `expandable`.');\n }\n\n return legacyExpandableConfig;\n}\n/**\n * Returns only data- and aria- key/value pairs\n * @param {object} props\n */\n\nexport function getDataAndAriaProps(props) {\n /* eslint-disable no-param-reassign */\n return Object.keys(props).reduce(function (memo, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-') {\n memo[key] = props[key];\n }\n\n return memo;\n }, {});\n /* eslint-enable */\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { INTERNAL_COL_DEFINE } from './utils/legacyUtil';\n\nfunction ColGroup(_ref) {\n var colWidths = _ref.colWidths,\n columns = _ref.columns,\n columCount = _ref.columCount;\n var cols = [];\n var len = columCount || columns.length; // Only insert col with width & additional props\n // Skip if rest col do not have any useful info\n\n var mustInsert = false;\n\n for (var i = len - 1; i >= 0; i -= 1) {\n var width = colWidths[i];\n var column = columns && columns[i];\n var additionalProps = column && column[INTERNAL_COL_DEFINE];\n\n if (width || additionalProps || mustInsert) {\n cols.unshift( /*#__PURE__*/React.createElement(\"col\", _extends({\n key: i,\n style: {\n width: width,\n minWidth: width\n }\n }, additionalProps)));\n mustInsert = true;\n }\n }\n\n return /*#__PURE__*/React.createElement(\"colgroup\", null, cols);\n}\n\nexport default ColGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { fillRef } from \"rc-util/es/ref\";\nimport Header from './Header';\nimport ColGroup from '../ColGroup';\nimport TableContext from '../context/TableContext';\n\nfunction useColumnWidth(colWidths, columCount) {\n return useMemo(function () {\n var cloneColumns = [];\n\n for (var i = 0; i < columCount; i += 1) {\n var val = colWidths[i];\n\n if (val !== undefined) {\n cloneColumns[i] = val;\n } else {\n return null;\n }\n }\n\n return cloneColumns;\n }, [colWidths.join('_'), columCount]);\n}\n\nvar FixedHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var noData = _ref.noData,\n columns = _ref.columns,\n flattenColumns = _ref.flattenColumns,\n colWidths = _ref.colWidths,\n columCount = _ref.columCount,\n stickyOffsets = _ref.stickyOffsets,\n direction = _ref.direction,\n fixHeader = _ref.fixHeader,\n offsetHeader = _ref.offsetHeader,\n stickyClassName = _ref.stickyClassName,\n onScroll = _ref.onScroll,\n maxContentScroll = _ref.maxContentScroll,\n props = _objectWithoutProperties(_ref, [\"noData\", \"columns\", \"flattenColumns\", \"colWidths\", \"columCount\", \"stickyOffsets\", \"direction\", \"fixHeader\", \"offsetHeader\", \"stickyClassName\", \"onScroll\", \"maxContentScroll\"]);\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n scrollbarSize = _React$useContext.scrollbarSize,\n isSticky = _React$useContext.isSticky;\n\n var combinationScrollBarSize = isSticky && !fixHeader ? 0 : scrollbarSize; // Pass wheel to scroll event\n\n var scrollRef = React.useRef(null);\n var setScrollRef = React.useCallback(function (element) {\n fillRef(ref, element);\n fillRef(scrollRef, element);\n }, []);\n React.useEffect(function () {\n var _scrollRef$current;\n\n function onWheel(e) {\n var currentTarget = e.currentTarget,\n deltaX = e.deltaX;\n\n if (deltaX) {\n onScroll({\n currentTarget: currentTarget,\n scrollLeft: currentTarget.scrollLeft + deltaX\n });\n e.preventDefault();\n }\n }\n\n (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.addEventListener('wheel', onWheel);\n return function () {\n var _scrollRef$current2;\n\n (_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 ? void 0 : _scrollRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []); // Check if all flattenColumns has width\n\n var allFlattenColumnsWithWidth = React.useMemo(function () {\n return flattenColumns.every(function (column) {\n return column.width >= 0;\n });\n }, [flattenColumns]); // Add scrollbar column\n\n var lastColumn = flattenColumns[flattenColumns.length - 1];\n var ScrollBarColumn = {\n fixed: lastColumn ? lastColumn.fixed : null,\n onHeaderCell: function onHeaderCell() {\n return {\n className: \"\".concat(prefixCls, \"-cell-scrollbar\")\n };\n }\n };\n var columnsWithScrollbar = useMemo(function () {\n return combinationScrollBarSize ? [].concat(_toConsumableArray(columns), [ScrollBarColumn]) : columns;\n }, [combinationScrollBarSize, columns]);\n var flattenColumnsWithScrollbar = useMemo(function () {\n return combinationScrollBarSize ? [].concat(_toConsumableArray(flattenColumns), [ScrollBarColumn]) : flattenColumns;\n }, [combinationScrollBarSize, flattenColumns]); // Calculate the sticky offsets\n\n var headerStickyOffsets = useMemo(function () {\n var right = stickyOffsets.right,\n left = stickyOffsets.left;\n return _objectSpread(_objectSpread({}, stickyOffsets), {}, {\n left: direction === 'rtl' ? [].concat(_toConsumableArray(left.map(function (width) {\n return width + combinationScrollBarSize;\n })), [0]) : left,\n right: direction === 'rtl' ? right : [].concat(_toConsumableArray(right.map(function (width) {\n return width + combinationScrollBarSize;\n })), [0]),\n isSticky: isSticky\n });\n }, [combinationScrollBarSize, stickyOffsets, isSticky]);\n var mergedColumnWidth = useColumnWidth(colWidths, columCount);\n return /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread({\n overflow: 'hidden'\n }, isSticky ? {\n top: offsetHeader\n } : {}),\n ref: setScrollRef,\n className: classNames(\"\".concat(prefixCls, \"-header\"), _defineProperty({}, stickyClassName, !!stickyClassName))\n }, /*#__PURE__*/React.createElement(\"table\", {\n style: {\n tableLayout: 'fixed',\n visibility: noData || mergedColumnWidth ? null : 'hidden'\n }\n }, (!noData || !maxContentScroll || allFlattenColumnsWithWidth) && /*#__PURE__*/React.createElement(ColGroup, {\n colWidths: mergedColumnWidth ? [].concat(_toConsumableArray(mergedColumnWidth), [combinationScrollBarSize]) : [],\n columCount: columCount + 1,\n columns: flattenColumnsWithScrollbar\n }), /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n stickyOffsets: headerStickyOffsets,\n columns: columnsWithScrollbar,\n flattenColumns: flattenColumnsWithScrollbar\n }))));\n});\nFixedHeader.displayName = 'FixedHeader';\nexport default FixedHeader;","import * as React from 'react';\nvar BodyContext = /*#__PURE__*/React.createContext(null);\nexport default BodyContext;","import * as React from 'react';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\n\nfunction ExpandedRow(_ref) {\n var prefixCls = _ref.prefixCls,\n children = _ref.children,\n Component = _ref.component,\n cellComponent = _ref.cellComponent,\n fixHeader = _ref.fixHeader,\n fixColumn = _ref.fixColumn,\n horizonScroll = _ref.horizonScroll,\n className = _ref.className,\n expanded = _ref.expanded,\n componentWidth = _ref.componentWidth,\n colSpan = _ref.colSpan;\n\n var _React$useContext = React.useContext(TableContext),\n scrollbarSize = _React$useContext.scrollbarSize; // Cache render node\n\n\n return React.useMemo(function () {\n var contentNode = children;\n\n if (fixColumn) {\n contentNode = /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: componentWidth - (fixHeader ? scrollbarSize : 0),\n position: 'sticky',\n left: 0,\n overflow: 'hidden'\n },\n className: \"\".concat(prefixCls, \"-expanded-row-fixed\")\n }, contentNode);\n }\n\n return /*#__PURE__*/React.createElement(Component, {\n className: className,\n style: {\n display: expanded ? null : 'none'\n }\n }, /*#__PURE__*/React.createElement(Cell, {\n component: cellComponent,\n prefixCls: prefixCls,\n colSpan: colSpan\n }, contentNode));\n }, [children, Component, fixHeader, horizonScroll, className, expanded, componentWidth, colSpan, scrollbarSize]);\n}\n\nexport default ExpandedRow;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nimport BodyContext from '../context/BodyContext';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport ExpandedRow from './ExpandedRow';\n\nfunction BodyRow(props) {\n var className = props.className,\n style = props.style,\n record = props.record,\n index = props.index,\n rowKey = props.rowKey,\n getRowKey = props.getRowKey,\n rowExpandable = props.rowExpandable,\n expandedKeys = props.expandedKeys,\n onRow = props.onRow,\n _props$indent = props.indent,\n indent = _props$indent === void 0 ? 0 : _props$indent,\n RowComponent = props.rowComponent,\n cellComponent = props.cellComponent,\n childrenColumnName = props.childrenColumnName;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n fixedInfoList = _React$useContext.fixedInfoList;\n\n var _React$useContext2 = React.useContext(BodyContext),\n fixHeader = _React$useContext2.fixHeader,\n fixColumn = _React$useContext2.fixColumn,\n horizonScroll = _React$useContext2.horizonScroll,\n componentWidth = _React$useContext2.componentWidth,\n flattenColumns = _React$useContext2.flattenColumns,\n expandableType = _React$useContext2.expandableType,\n expandRowByClick = _React$useContext2.expandRowByClick,\n onTriggerExpand = _React$useContext2.onTriggerExpand,\n rowClassName = _React$useContext2.rowClassName,\n expandedRowClassName = _React$useContext2.expandedRowClassName,\n indentSize = _React$useContext2.indentSize,\n expandIcon = _React$useContext2.expandIcon,\n expandedRowRender = _React$useContext2.expandedRowRender,\n expandIconColumnIndex = _React$useContext2.expandIconColumnIndex;\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n expandRended = _React$useState2[0],\n setExpandRended = _React$useState2[1];\n\n var expanded = expandedKeys && expandedKeys.has(props.recordKey);\n React.useEffect(function () {\n if (expanded) {\n setExpandRended(true);\n }\n }, [expanded]);\n var rowSupportExpand = expandableType === 'row' && (!rowExpandable || rowExpandable(record)); // Only when row is not expandable and `children` exist in record\n\n var nestExpandable = expandableType === 'nest';\n var hasNestChildren = childrenColumnName && record && record[childrenColumnName];\n var mergedExpandable = rowSupportExpand || nestExpandable; // =========================== onRow ===========================\n\n var additionalProps;\n\n if (onRow) {\n additionalProps = onRow(record, index);\n }\n\n var onClick = function onClick(event) {\n if (expandRowByClick && mergedExpandable) {\n onTriggerExpand(record, event);\n }\n\n if (additionalProps && additionalProps.onClick) {\n var _additionalProps;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_additionalProps = additionalProps).onClick.apply(_additionalProps, [event].concat(args));\n }\n }; // ======================== Base tr row ========================\n\n\n var computeRowClassName;\n\n if (typeof rowClassName === 'string') {\n computeRowClassName = rowClassName;\n } else if (typeof rowClassName === 'function') {\n computeRowClassName = rowClassName(record, index, indent);\n }\n\n var columnsKey = getColumnsKey(flattenColumns);\n var baseRowNode = /*#__PURE__*/React.createElement(RowComponent, _extends({}, additionalProps, {\n \"data-row-key\": rowKey,\n className: classNames(className, \"\".concat(prefixCls, \"-row\"), \"\".concat(prefixCls, \"-row-level-\").concat(indent), computeRowClassName, additionalProps && additionalProps.className),\n style: _objectSpread(_objectSpread({}, style), additionalProps ? additionalProps.style : null),\n onClick: onClick\n }), flattenColumns.map(function (column, colIndex) {\n var render = column.render,\n dataIndex = column.dataIndex,\n columnClassName = column.className;\n var key = columnsKey[colIndex];\n var fixedInfo = fixedInfoList[colIndex]; // ============= Used for nest expandable =============\n\n var appendCellNode;\n\n if (colIndex === (expandIconColumnIndex || 0) && nestExpandable) {\n appendCellNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n style: {\n paddingLeft: \"\".concat(indentSize * indent, \"px\")\n },\n className: \"\".concat(prefixCls, \"-row-indent indent-level-\").concat(indent)\n }), expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n expandable: hasNestChildren,\n record: record,\n onExpand: onTriggerExpand\n }));\n }\n\n var additionalCellProps;\n\n if (column.onCell) {\n additionalCellProps = column.onCell(record, index);\n }\n\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: columnClassName,\n ellipsis: column.ellipsis,\n align: column.align,\n component: cellComponent,\n prefixCls: prefixCls,\n key: key,\n record: record,\n index: index,\n dataIndex: dataIndex,\n render: render,\n shouldCellUpdate: column.shouldCellUpdate\n }, fixedInfo, {\n appendNode: appendCellNode,\n additionalProps: additionalCellProps\n }));\n })); // ======================== Expand Row =========================\n\n var expandRowNode;\n\n if (rowSupportExpand && (expandRended || expanded)) {\n var expandContent = expandedRowRender(record, index, indent + 1, expanded);\n var computedExpandedRowClassName = expandedRowClassName && expandedRowClassName(record, index, indent);\n expandRowNode = /*#__PURE__*/React.createElement(ExpandedRow, {\n expanded: expanded,\n className: classNames(\"\".concat(prefixCls, \"-expanded-row\"), \"\".concat(prefixCls, \"-expanded-row-level-\").concat(indent + 1), computedExpandedRowClassName),\n prefixCls: prefixCls,\n fixHeader: fixHeader,\n fixColumn: fixColumn,\n horizonScroll: horizonScroll,\n component: RowComponent,\n componentWidth: componentWidth,\n cellComponent: cellComponent,\n colSpan: flattenColumns.length\n }, expandContent);\n } // ========================= Nest Row ==========================\n\n\n var nestRowNode;\n\n if (hasNestChildren && expanded) {\n nestRowNode = (record[childrenColumnName] || []).map(function (subRecord, subIndex) {\n var subKey = getRowKey(subRecord, subIndex);\n return /*#__PURE__*/React.createElement(BodyRow, _extends({}, props, {\n key: subKey,\n rowKey: subKey,\n record: subRecord,\n recordKey: subKey,\n index: subIndex,\n indent: indent + 1\n }));\n });\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, baseRowNode, expandRowNode, nestRowNode);\n}\n\nBodyRow.displayName = 'BodyRow';\nexport default BodyRow;","import * as React from 'react';\nvar ResizeContext = /*#__PURE__*/React.createContext(null);\nexport default ResizeContext;","import * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nexport default function MeasureCell(_ref) {\n var columnKey = _ref.columnKey,\n onColumnResize = _ref.onColumnResize;\n var cellRef = React.useRef();\n React.useEffect(function () {\n if (cellRef.current) {\n onColumnResize(columnKey, cellRef.current.offsetWidth);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetWidth = _ref2.offsetWidth;\n onColumnResize(columnKey, offsetWidth);\n }\n }, /*#__PURE__*/React.createElement(\"td\", {\n ref: cellRef,\n style: {\n padding: 0,\n border: 0,\n height: 0\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: 0,\n overflow: 'hidden'\n }\n }, \"\\xA0\")));\n}","import * as React from 'react';\nimport BodyRow from './BodyRow';\nimport TableContext from '../context/TableContext';\nimport ExpandedRow from './ExpandedRow';\nimport BodyContext from '../context/BodyContext';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport ResizeContext from '../context/ResizeContext';\nimport MeasureCell from './MeasureCell';\n\nfunction Body(_ref) {\n var data = _ref.data,\n getRowKey = _ref.getRowKey,\n measureColumnWidth = _ref.measureColumnWidth,\n expandedKeys = _ref.expandedKeys,\n onRow = _ref.onRow,\n rowExpandable = _ref.rowExpandable,\n emptyNode = _ref.emptyNode,\n childrenColumnName = _ref.childrenColumnName;\n\n var _React$useContext = React.useContext(ResizeContext),\n onColumnResize = _React$useContext.onColumnResize;\n\n var _React$useContext2 = React.useContext(TableContext),\n prefixCls = _React$useContext2.prefixCls,\n getComponent = _React$useContext2.getComponent;\n\n var _React$useContext3 = React.useContext(BodyContext),\n fixHeader = _React$useContext3.fixHeader,\n horizonScroll = _React$useContext3.horizonScroll,\n flattenColumns = _React$useContext3.flattenColumns,\n componentWidth = _React$useContext3.componentWidth;\n\n return React.useMemo(function () {\n var WrapperComponent = getComponent(['body', 'wrapper'], 'tbody');\n var trComponent = getComponent(['body', 'row'], 'tr');\n var tdComponent = getComponent(['body', 'cell'], 'td');\n var rows;\n\n if (data.length) {\n rows = data.map(function (record, index) {\n var key = getRowKey(record, index);\n return /*#__PURE__*/React.createElement(BodyRow, {\n key: key,\n rowKey: key,\n record: record,\n recordKey: key,\n index: index,\n rowComponent: trComponent,\n cellComponent: tdComponent,\n expandedKeys: expandedKeys,\n onRow: onRow,\n getRowKey: getRowKey,\n rowExpandable: rowExpandable,\n childrenColumnName: childrenColumnName\n });\n });\n } else {\n rows = /*#__PURE__*/React.createElement(ExpandedRow, {\n expanded: true,\n className: \"\".concat(prefixCls, \"-placeholder\"),\n prefixCls: prefixCls,\n fixHeader: fixHeader,\n fixColumn: horizonScroll,\n horizonScroll: horizonScroll,\n component: trComponent,\n componentWidth: componentWidth,\n cellComponent: tdComponent,\n colSpan: flattenColumns.length\n }, emptyNode);\n }\n\n var columnsKey = getColumnsKey(flattenColumns);\n return /*#__PURE__*/React.createElement(WrapperComponent, {\n className: \"\".concat(prefixCls, \"-tbody\")\n }, measureColumnWidth && /*#__PURE__*/React.createElement(\"tr\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-measure-row\"),\n style: {\n height: 0,\n fontSize: 0\n }\n }, columnsKey.map(function (columnKey) {\n return /*#__PURE__*/React.createElement(MeasureCell, {\n key: columnKey,\n columnKey: columnKey,\n onColumnResize: onColumnResize\n });\n })), rows);\n }, [data, prefixCls, onRow, measureColumnWidth, expandedKeys, getRowKey, getComponent, componentWidth, emptyNode, flattenColumns]);\n}\n\nvar MemoBody = /*#__PURE__*/React.memo(Body);\nMemoBody.displayName = 'Body';\nexport default MemoBody;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { INTERNAL_COL_DEFINE } from '../utils/legacyUtil';\nexport function convertChildrenToColumns(children) {\n return toArray(children).filter(function (node) {\n return /*#__PURE__*/React.isValidElement(node);\n }).map(function (_ref) {\n var key = _ref.key,\n props = _ref.props;\n\n var nodeChildren = props.children,\n restProps = _objectWithoutProperties(props, [\"children\"]);\n\n var column = _objectSpread({\n key: key\n }, restProps);\n\n if (nodeChildren) {\n column.children = convertChildrenToColumns(nodeChildren);\n }\n\n return column;\n });\n}\n\nfunction flatColumns(columns) {\n return columns.reduce(function (list, column) {\n var fixed = column.fixed; // Convert `fixed='true'` to `fixed='left'` instead\n\n var parsedFixed = fixed === true ? 'left' : fixed;\n var subColumns = column.children;\n\n if (subColumns && subColumns.length > 0) {\n return [].concat(_toConsumableArray(list), _toConsumableArray(flatColumns(subColumns).map(function (subColum) {\n return _objectSpread({\n fixed: parsedFixed\n }, subColum);\n })));\n }\n\n return [].concat(_toConsumableArray(list), [_objectSpread(_objectSpread({}, column), {}, {\n fixed: parsedFixed\n })]);\n }, []);\n}\n\nfunction warningFixed(flattenColumns) {\n var allFixLeft = true;\n\n for (var i = 0; i < flattenColumns.length; i += 1) {\n var col = flattenColumns[i];\n\n if (allFixLeft && col.fixed !== 'left') {\n allFixLeft = false;\n } else if (!allFixLeft && col.fixed === 'left') {\n warning(false, \"Index \".concat(i - 1, \" of `columns` missing `fixed='left'` prop.\"));\n break;\n }\n }\n\n var allFixRight = true;\n\n for (var _i = flattenColumns.length - 1; _i >= 0; _i -= 1) {\n var _col = flattenColumns[_i];\n\n if (allFixRight && _col.fixed !== 'right') {\n allFixRight = false;\n } else if (!allFixRight && _col.fixed === 'right') {\n warning(false, \"Index \".concat(_i + 1, \" of `columns` missing `fixed='right'` prop.\"));\n break;\n }\n }\n}\n\nfunction revertForRtl(columns) {\n return columns.map(function (column) {\n var fixed = column.fixed,\n restProps = _objectWithoutProperties(column, [\"fixed\"]); // Convert `fixed='left'` to `fixed='right'` instead\n\n\n var parsedFixed = fixed;\n\n if (fixed === 'left') {\n parsedFixed = 'right';\n } else if (fixed === 'right') {\n parsedFixed = 'left';\n }\n\n return _objectSpread({\n fixed: parsedFixed\n }, restProps);\n });\n}\n/**\n * Parse `columns` & `children` into `columns`.\n */\n\n\nfunction useColumns(_ref2, transformColumns) {\n var prefixCls = _ref2.prefixCls,\n columns = _ref2.columns,\n children = _ref2.children,\n expandable = _ref2.expandable,\n expandedKeys = _ref2.expandedKeys,\n getRowKey = _ref2.getRowKey,\n onTriggerExpand = _ref2.onTriggerExpand,\n expandIcon = _ref2.expandIcon,\n rowExpandable = _ref2.rowExpandable,\n expandIconColumnIndex = _ref2.expandIconColumnIndex,\n direction = _ref2.direction,\n expandRowByClick = _ref2.expandRowByClick,\n columnWidth = _ref2.columnWidth;\n var baseColumns = React.useMemo(function () {\n return columns || convertChildrenToColumns(children);\n }, [columns, children]); // Add expand column\n\n var withExpandColumns = React.useMemo(function () {\n if (expandable) {\n var _expandColumn;\n\n var expandColIndex = expandIconColumnIndex || 0;\n var prevColumn = baseColumns[expandColIndex];\n var expandColumn = (_expandColumn = {}, _defineProperty(_expandColumn, INTERNAL_COL_DEFINE, {\n className: \"\".concat(prefixCls, \"-expand-icon-col\")\n }), _defineProperty(_expandColumn, \"title\", ''), _defineProperty(_expandColumn, \"fixed\", prevColumn ? prevColumn.fixed : null), _defineProperty(_expandColumn, \"className\", \"\".concat(prefixCls, \"-row-expand-icon-cell\")), _defineProperty(_expandColumn, \"width\", columnWidth), _defineProperty(_expandColumn, \"render\", function render(_, record, index) {\n var rowKey = getRowKey(record, index);\n var expanded = expandedKeys.has(rowKey);\n var recordExpandable = rowExpandable ? rowExpandable(record) : true;\n var icon = expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n expandable: recordExpandable,\n record: record,\n onExpand: onTriggerExpand\n });\n\n if (expandRowByClick) {\n return /*#__PURE__*/React.createElement(\"span\", {\n onClick: function onClick(e) {\n return e.stopPropagation();\n }\n }, icon);\n }\n\n return icon;\n }), _expandColumn); // Insert expand column in the target position\n\n var cloneColumns = baseColumns.slice();\n\n if (expandColIndex >= 0) {\n cloneColumns.splice(expandColIndex, 0, expandColumn);\n }\n\n return cloneColumns;\n }\n\n return baseColumns;\n }, [expandable, baseColumns, getRowKey, expandedKeys, expandIcon, direction]);\n var mergedColumns = React.useMemo(function () {\n var finalColumns = withExpandColumns;\n\n if (transformColumns) {\n finalColumns = transformColumns(finalColumns);\n } // Always provides at least one column for table display\n\n\n if (!finalColumns.length) {\n finalColumns = [{\n render: function render() {\n return null;\n }\n }];\n }\n\n return finalColumns;\n }, [transformColumns, withExpandColumns, direction]);\n var flattenColumns = React.useMemo(function () {\n if (direction === 'rtl') {\n return revertForRtl(flatColumns(mergedColumns));\n }\n\n return flatColumns(mergedColumns);\n }, [mergedColumns, direction]); // Only check out of production since it's waste for each render\n\n if (process.env.NODE_ENV !== 'production') {\n warningFixed(flattenColumns);\n }\n\n return [mergedColumns, flattenColumns];\n}\n\nexport default useColumns;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef, useState, useEffect } from 'react';\n/**\n * Execute code before next frame but async\n */\n\nexport function useLayoutState(defaultState) {\n var stateRef = useRef(defaultState);\n\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n\n var lastPromiseRef = useRef(null);\n var updateBatchRef = useRef([]);\n\n function setFrameState(updater) {\n updateBatchRef.current.push(updater);\n var promise = Promise.resolve();\n lastPromiseRef.current = promise;\n promise.then(function () {\n if (lastPromiseRef.current === promise) {\n var prevBatch = updateBatchRef.current;\n var prevState = stateRef.current;\n updateBatchRef.current = [];\n prevBatch.forEach(function (batchUpdater) {\n stateRef.current = batchUpdater(stateRef.current);\n });\n lastPromiseRef.current = null;\n\n if (prevState !== stateRef.current) {\n forceUpdate({});\n }\n }\n });\n }\n\n useEffect(function () {\n return function () {\n lastPromiseRef.current = null;\n };\n }, []);\n return [stateRef.current, setFrameState];\n}\n/** Lock frame, when frame pass reset the lock. */\n\nexport function useTimeoutLock(defaultState) {\n var frameRef = useRef(defaultState || null);\n var timeoutRef = useRef();\n\n function cleanUp() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function setState(newState) {\n frameRef.current = newState;\n cleanUp();\n timeoutRef.current = window.setTimeout(function () {\n frameRef.current = null;\n timeoutRef.current = undefined;\n }, 100);\n }\n\n function getState() {\n return frameRef.current;\n }\n\n useEffect(function () {\n return cleanUp;\n }, []);\n return [setState, getState];\n}","import { useMemo } from 'react';\n/**\n * Get sticky column offset width\n */\n\nfunction useStickyOffsets(colWidths, columnCount, direction) {\n var stickyOffsets = useMemo(function () {\n var leftOffsets = [];\n var rightOffsets = [];\n var left = 0;\n var right = 0;\n\n for (var start = 0; start < columnCount; start += 1) {\n if (direction === 'rtl') {\n // Left offset\n rightOffsets[start] = right;\n right += colWidths[start] || 0; // Right offset\n\n var end = columnCount - start - 1;\n leftOffsets[end] = left;\n left += colWidths[end] || 0;\n } else {\n // Left offset\n leftOffsets[start] = left;\n left += colWidths[start] || 0; // Right offset\n\n var _end = columnCount - start - 1;\n\n rightOffsets[_end] = right;\n right += colWidths[_end] || 0;\n }\n }\n\n return {\n left: leftOffsets,\n right: rightOffsets\n };\n }, [colWidths, columnCount, direction]);\n return stickyOffsets;\n}\n\nexport default useStickyOffsets;","import * as React from 'react';\n\nfunction Panel(_ref) {\n var className = _ref.className,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, children);\n}\n\nexport default Panel;","import * as React from 'react';\nimport TableContext from '../context/TableContext';\nimport Cell from './Cell';\nimport Row from './Row';\n\nfunction Footer(_ref) {\n var children = _ref.children;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls;\n\n return /*#__PURE__*/React.createElement(\"tfoot\", {\n className: \"\".concat(prefixCls, \"-summary\")\n }, children);\n}\n\nexport default Footer;\nexport var FooterComponents = {\n Cell: Cell,\n Row: Row\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nexport default function SummaryCell(_ref) {\n var className = _ref.className,\n index = _ref.index,\n children = _ref.children,\n colSpan = _ref.colSpan,\n rowSpan = _ref.rowSpan,\n align = _ref.align;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n fixedInfoList = _React$useContext.fixedInfoList;\n\n var fixedInfo = fixedInfoList[index];\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: className,\n index: index,\n component: \"td\",\n prefixCls: prefixCls,\n record: null,\n dataIndex: null,\n align: align,\n render: function render() {\n return {\n children: children,\n props: {\n colSpan: colSpan,\n rowSpan: rowSpan\n }\n };\n }\n }, fixedInfo));\n}","import * as React from 'react';\nexport default function FooterRow(props) {\n return /*#__PURE__*/React.createElement(\"tr\", props);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nexport function renderExpandIcon(_ref) {\n var _classNames;\n\n var prefixCls = _ref.prefixCls,\n record = _ref.record,\n onExpand = _ref.onExpand,\n expanded = _ref.expanded,\n expandable = _ref.expandable;\n var expandClassName = \"\".concat(prefixCls, \"-row-expand-icon\");\n\n if (!expandable) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(expandClassName, \"\".concat(prefixCls, \"-row-spaced\"))\n });\n }\n\n var onClick = function onClick(event) {\n onExpand(record, event);\n event.stopPropagation();\n };\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(expandClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-row-expanded\"), expanded), _defineProperty(_classNames, \"\".concat(prefixCls, \"-row-collapsed\"), !expanded), _classNames)),\n onClick: onClick\n });\n}\nexport function findAllChildrenKeys(data, getRowKey, childrenColumnName) {\n var keys = [];\n\n function dig(list) {\n (list || []).forEach(function (item, index) {\n keys.push(getRowKey(item, index));\n dig(item[childrenColumnName]);\n });\n }\n\n dig(data);\n return keys;\n}","/* eslint-disable no-nested-ternary */\nvar PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/;\nvar removePixel = {\n left: true,\n top: true\n};\nvar floatMap = {\n cssFloat: 1,\n styleFloat: 1,\n float: 1\n};\n\nfunction getComputedStyle(node) {\n return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {};\n}\n\nfunction getStyleValue(node, type, value) {\n type = type.toLowerCase();\n\n if (value === 'auto') {\n if (type === 'height') {\n return node.offsetHeight;\n }\n\n if (type === 'width') {\n return node.offsetWidth;\n }\n }\n\n if (!(type in removePixel)) {\n removePixel[type] = PIXEL_PATTERN.test(type);\n }\n\n return removePixel[type] ? parseFloat(value) || 0 : value;\n}\n\nexport function get(node, name) {\n var length = arguments.length;\n var style = getComputedStyle(node);\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name]);\n}\nexport function set(node, name, value) {\n var length = arguments.length;\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n\n if (length === 3) {\n if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n value = \"\".concat(value, \"px\");\n }\n\n node.style[name] = value; // Number\n\n return value;\n }\n\n for (var x in name) {\n if (name.hasOwnProperty(x)) {\n set(node, x, name[x]);\n }\n }\n\n return getComputedStyle(node);\n}\nexport function getOuterWidth(el) {\n if (el === document.body) {\n return document.documentElement.clientWidth;\n }\n\n return el.offsetWidth;\n}\nexport function getOuterHeight(el) {\n if (el === document.body) {\n return window.innerHeight || document.documentElement.clientHeight;\n }\n\n return el.offsetHeight;\n}\nexport function getDocSize() {\n var width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n var height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n return {\n width: width,\n height: height\n };\n}\nexport function getClientSize() {\n var width = document.documentElement.clientWidth;\n var height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width: width,\n height: height\n };\n}\nexport function getScroll() {\n return {\n scrollLeft: Math.max(document.documentElement.scrollLeft, document.body.scrollLeft),\n scrollTop: Math.max(document.documentElement.scrollTop, document.body.scrollTop)\n };\n}\nexport function getOffset(node) {\n var box = node.getBoundingClientRect();\n var docElem = document.documentElement; // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft\n\n return {\n left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),\n top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport classNames from 'classnames';\nimport { getOffset } from \"rc-util/es/Dom/css\";\nimport TableContext from './context/TableContext';\nimport { useLayoutState } from './hooks/useFrame';\n\nvar StickyScrollBar = function StickyScrollBar(_ref, ref) {\n var _scrollBodyRef$curren, _scrollBodyRef$curren2;\n\n var scrollBodyRef = _ref.scrollBodyRef,\n onScroll = _ref.onScroll,\n offsetScroll = _ref.offsetScroll,\n container = _ref.container;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls;\n\n var bodyScrollWidth = ((_scrollBodyRef$curren = scrollBodyRef.current) === null || _scrollBodyRef$curren === void 0 ? void 0 : _scrollBodyRef$curren.scrollWidth) || 0;\n var bodyWidth = ((_scrollBodyRef$curren2 = scrollBodyRef.current) === null || _scrollBodyRef$curren2 === void 0 ? void 0 : _scrollBodyRef$curren2.clientWidth) || 0;\n var scrollBarWidth = bodyScrollWidth && bodyWidth * (bodyWidth / bodyScrollWidth);\n var scrollBarRef = React.useRef();\n\n var _useLayoutState = useLayoutState({\n scrollLeft: 0,\n isHiddenScrollBar: false\n }),\n _useLayoutState2 = _slicedToArray(_useLayoutState, 2),\n scrollState = _useLayoutState2[0],\n setScrollState = _useLayoutState2[1];\n\n var refState = React.useRef({\n delta: 0,\n x: 0\n });\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isActive = _React$useState2[0],\n setActive = _React$useState2[1];\n\n var onMouseUp = function onMouseUp() {\n setActive(false);\n };\n\n var onMouseDown = function onMouseDown(event) {\n event.persist();\n refState.current.delta = event.pageX - scrollState.scrollLeft;\n refState.current.x = 0;\n setActive(true);\n event.preventDefault();\n };\n\n var onMouseMove = function onMouseMove(event) {\n var _window; // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n\n\n var _ref2 = event || ((_window = window) === null || _window === void 0 ? void 0 : _window.event),\n buttons = _ref2.buttons;\n\n if (!isActive || buttons === 0) {\n // If out body mouse up, we can set isActive false when mouse move\n if (isActive) {\n setActive(false);\n }\n\n return;\n }\n\n var left = refState.current.x + event.pageX - refState.current.x - refState.current.delta;\n\n if (left <= 0) {\n left = 0;\n }\n\n if (left + scrollBarWidth >= bodyWidth) {\n left = bodyWidth - scrollBarWidth;\n }\n\n onScroll({\n scrollLeft: left / bodyWidth * (bodyScrollWidth + 2)\n });\n refState.current.x = event.pageX;\n };\n\n var onContainerScroll = function onContainerScroll() {\n var tableOffsetTop = getOffset(scrollBodyRef.current).top;\n var tableBottomOffset = tableOffsetTop + scrollBodyRef.current.offsetHeight;\n var currentClientOffset = container === window ? document.documentElement.scrollTop + window.innerHeight : getOffset(container).top + container.clientHeight;\n\n if (tableBottomOffset - getScrollBarSize() <= currentClientOffset || tableOffsetTop >= currentClientOffset - offsetScroll) {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isHiddenScrollBar: true\n });\n });\n } else {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isHiddenScrollBar: false\n });\n });\n }\n };\n\n var setScrollLeft = function setScrollLeft(left) {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n scrollLeft: left / bodyScrollWidth * bodyWidth || 0\n });\n });\n };\n\n React.useImperativeHandle(ref, function () {\n return {\n setScrollLeft: setScrollLeft\n };\n });\n React.useEffect(function () {\n var onMouseUpListener = addEventListener(document.body, 'mouseup', onMouseUp, false);\n var onMouseMoveListener = addEventListener(document.body, 'mousemove', onMouseMove, false);\n onContainerScroll();\n return function () {\n onMouseUpListener.remove();\n onMouseMoveListener.remove();\n };\n }, [scrollBarWidth, isActive]);\n React.useEffect(function () {\n var onScrollListener = addEventListener(container, 'scroll', onContainerScroll, false);\n var onResizeListener = addEventListener(window, 'resize', onContainerScroll, false);\n return function () {\n onScrollListener.remove();\n onResizeListener.remove();\n };\n }, [container]);\n React.useEffect(function () {\n if (!scrollState.isHiddenScrollBar) {\n setScrollState(function (state) {\n var bodyNode = scrollBodyRef.current;\n\n if (!bodyNode) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n scrollLeft: bodyNode.scrollLeft / bodyNode.scrollWidth * bodyNode.clientWidth\n });\n });\n }\n }, [scrollState.isHiddenScrollBar]);\n\n if (bodyScrollWidth <= bodyWidth || !scrollBarWidth || scrollState.isHiddenScrollBar) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: getScrollBarSize(),\n width: bodyWidth,\n bottom: offsetScroll\n },\n className: \"\".concat(prefixCls, \"-sticky-scroll\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n onMouseDown: onMouseDown,\n ref: scrollBarRef,\n className: classNames(\"\".concat(prefixCls, \"-sticky-scroll-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-sticky-scroll-bar-active\"), isActive)),\n style: {\n width: \"\".concat(scrollBarWidth, \"px\"),\n transform: \"translate3d(\".concat(scrollState.scrollLeft, \"px, 0, 0)\")\n }\n }));\n};\n\nexport default /*#__PURE__*/React.forwardRef(StickyScrollBar);","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\"; // fix ssr render\n\nvar defaultContainer = canUseDom() ? window : null;\n/** Sticky header hooks */\n\nexport default function useSticky(sticky, prefixCls) {\n var _ref = _typeof(sticky) === 'object' ? sticky : {},\n _ref$offsetHeader = _ref.offsetHeader,\n offsetHeader = _ref$offsetHeader === void 0 ? 0 : _ref$offsetHeader,\n _ref$offsetScroll = _ref.offsetScroll,\n offsetScroll = _ref$offsetScroll === void 0 ? 0 : _ref$offsetScroll,\n _ref$getContainer = _ref.getContainer,\n getContainer = _ref$getContainer === void 0 ? function () {\n return defaultContainer;\n } : _ref$getContainer;\n\n var container = getContainer() || defaultContainer;\n return React.useMemo(function () {\n var isSticky = !!sticky;\n return {\n isSticky: isSticky,\n stickyClassName: isSticky ? \"\".concat(prefixCls, \"-sticky-header\") : '',\n offsetHeader: offsetHeader,\n offsetScroll: offsetScroll,\n container: container\n };\n }, [offsetScroll, offsetHeader, prefixCls, container]);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Feature:\n * - fixed not need to set width\n * - support `rowExpandable` to config row expand logic\n * - add `summary` to support `() => ReactNode`\n *\n * Update:\n * - `dataIndex` is `array[]` now\n * - `expandable` wrap all the expand related props\n *\n * Removed:\n * - expandIconAsCell\n * - useFixedHeader\n * - rowRef\n * - columns[number].onCellClick\n * - onRowClick\n * - onRowDoubleClick\n * - onRowMouseEnter\n * - onRowMouseLeave\n * - getBodyWrapper\n * - bodyStyle\n *\n * Deprecated:\n * - All expanded props, move into expandable\n */\n\nimport * as React from 'react';\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport warning from \"rc-util/es/warning\";\nimport ResizeObserver from 'rc-resize-observer';\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport ColumnGroup from './sugar/ColumnGroup';\nimport Column from './sugar/Column';\nimport FixedHeader from './Header/FixedHeader';\nimport Header from './Header/Header';\nimport TableContext from './context/TableContext';\nimport BodyContext from './context/BodyContext';\nimport Body from './Body';\nimport useColumns from './hooks/useColumns';\nimport { useLayoutState, useTimeoutLock } from './hooks/useFrame';\nimport { getPathValue, mergeObject, validateValue, getColumnsKey } from './utils/valueUtil';\nimport ResizeContext from './context/ResizeContext';\nimport useStickyOffsets from './hooks/useStickyOffsets';\nimport ColGroup from './ColGroup';\nimport { getExpandableProps, getDataAndAriaProps } from './utils/legacyUtil';\nimport Panel from './Panel';\nimport Footer, { FooterComponents } from './Footer';\nimport { findAllChildrenKeys, renderExpandIcon } from './utils/expandUtil';\nimport { getCellFixedInfo } from './utils/fixUtil';\nimport StickyScrollBar from './stickyScrollBar';\nimport useSticky from './hooks/useSticky'; // Used for conditions cache\n\nvar EMPTY_DATA = []; // Used for customize scroll\n\nvar EMPTY_SCROLL_TARGET = {};\nexport var INTERNAL_HOOKS = 'rc-table-internal-hook';\nvar MemoTableContent = /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (prev, next) {\n if (!shallowEqual(prev.props, next.props)) {\n return false;\n } // No additional render when pinged status change.\n // This is not a bug.\n\n\n return prev.pingLeft !== next.pingLeft || prev.pingRight !== next.pingRight;\n});\n\nfunction Table(props) {\n var _classNames;\n\n var prefixCls = props.prefixCls,\n className = props.className,\n rowClassName = props.rowClassName,\n style = props.style,\n data = props.data,\n rowKey = props.rowKey,\n scroll = props.scroll,\n tableLayout = props.tableLayout,\n direction = props.direction,\n title = props.title,\n footer = props.footer,\n summary = props.summary,\n id = props.id,\n showHeader = props.showHeader,\n components = props.components,\n emptyText = props.emptyText,\n onRow = props.onRow,\n onHeaderRow = props.onHeaderRow,\n internalHooks = props.internalHooks,\n transformColumns = props.transformColumns,\n internalRefs = props.internalRefs,\n sticky = props.sticky;\n var mergedData = data || EMPTY_DATA;\n var hasData = !!mergedData.length; // ===================== Effects ======================\n\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n scrollbarSize = _React$useState2[0],\n setScrollbarSize = _React$useState2[1];\n\n React.useEffect(function () {\n setScrollbarSize(getScrollBarSize());\n }); // ===================== Warning ======================\n\n if (process.env.NODE_ENV !== 'production') {\n ['onRowClick', 'onRowDoubleClick', 'onRowContextMenu', 'onRowMouseEnter', 'onRowMouseLeave'].forEach(function (name) {\n warning(props[name] === undefined, \"`\".concat(name, \"` is removed, please use `onRow` instead.\"));\n });\n warning(!('getBodyWrapper' in props), '`getBodyWrapper` is deprecated, please use custom `components` instead.');\n } // ==================== Customize =====================\n\n\n var mergedComponents = React.useMemo(function () {\n return mergeObject(components, {});\n }, [components]);\n var getComponent = React.useCallback(function (path, defaultComponent) {\n return getPathValue(mergedComponents, path) || defaultComponent;\n }, [mergedComponents]);\n var getRowKey = React.useMemo(function () {\n if (typeof rowKey === 'function') {\n return rowKey;\n }\n\n return function (record) {\n var key = record && record[rowKey];\n\n if (process.env.NODE_ENV !== 'production') {\n warning(key !== undefined, 'Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key.');\n }\n\n return key;\n };\n }, [rowKey]); // ====================== Expand ======================\n\n var expandableConfig = getExpandableProps(props);\n var expandIcon = expandableConfig.expandIcon,\n expandedRowKeys = expandableConfig.expandedRowKeys,\n defaultExpandedRowKeys = expandableConfig.defaultExpandedRowKeys,\n defaultExpandAllRows = expandableConfig.defaultExpandAllRows,\n expandedRowRender = expandableConfig.expandedRowRender,\n onExpand = expandableConfig.onExpand,\n onExpandedRowsChange = expandableConfig.onExpandedRowsChange,\n expandRowByClick = expandableConfig.expandRowByClick,\n rowExpandable = expandableConfig.rowExpandable,\n expandIconColumnIndex = expandableConfig.expandIconColumnIndex,\n expandedRowClassName = expandableConfig.expandedRowClassName,\n childrenColumnName = expandableConfig.childrenColumnName,\n indentSize = expandableConfig.indentSize;\n var mergedExpandIcon = expandIcon || renderExpandIcon;\n var mergedChildrenColumnName = childrenColumnName || 'children';\n var expandableType = React.useMemo(function () {\n if (expandedRowRender) {\n return 'row';\n }\n /* eslint-disable no-underscore-dangle */\n\n /**\n * Fix https://github.com/ant-design/ant-design/issues/21154\n * This is a workaround to not to break current behavior.\n * We can remove follow code after final release.\n *\n * To other developer:\n * Do not use `__PARENT_RENDER_ICON__` in prod since we will remove this when refactor\n */\n\n\n if (props.expandable && internalHooks === INTERNAL_HOOKS && props.expandable.__PARENT_RENDER_ICON__ || mergedData.some(function (record) {\n return record && _typeof(record) === 'object' && record[mergedChildrenColumnName];\n })) {\n return 'nest';\n }\n /* eslint-enable */\n\n\n return false;\n }, [!!expandedRowRender, mergedData]);\n\n var _React$useState3 = React.useState(function () {\n if (defaultExpandedRowKeys) {\n return defaultExpandedRowKeys;\n }\n\n if (defaultExpandAllRows) {\n return findAllChildrenKeys(mergedData, getRowKey, mergedChildrenColumnName);\n }\n\n return [];\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerExpandedKeys = _React$useState4[0],\n setInnerExpandedKeys = _React$useState4[1];\n\n var mergedExpandedKeys = React.useMemo(function () {\n return new Set(expandedRowKeys || innerExpandedKeys || []);\n }, [expandedRowKeys, innerExpandedKeys]);\n var onTriggerExpand = React.useCallback(function (record) {\n var key = getRowKey(record, mergedData.indexOf(record));\n var newExpandedKeys;\n var hasKey = mergedExpandedKeys.has(key);\n\n if (hasKey) {\n mergedExpandedKeys.delete(key);\n newExpandedKeys = _toConsumableArray(mergedExpandedKeys);\n } else {\n newExpandedKeys = [].concat(_toConsumableArray(mergedExpandedKeys), [key]);\n }\n\n setInnerExpandedKeys(newExpandedKeys);\n\n if (onExpand) {\n onExpand(!hasKey, record);\n }\n\n if (onExpandedRowsChange) {\n onExpandedRowsChange(newExpandedKeys);\n }\n }, [getRowKey, mergedExpandedKeys, mergedData, onExpand, onExpandedRowsChange]); // ====================== Column ======================\n\n var _React$useState5 = React.useState(0),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n componentWidth = _React$useState6[0],\n setComponentWidth = _React$useState6[1];\n\n var _useColumns = useColumns(_objectSpread(_objectSpread(_objectSpread({}, props), expandableConfig), {}, {\n expandable: !!expandedRowRender,\n expandedKeys: mergedExpandedKeys,\n getRowKey: getRowKey,\n // https://github.com/ant-design/ant-design/issues/23894\n onTriggerExpand: onTriggerExpand,\n expandIcon: mergedExpandIcon,\n expandIconColumnIndex: expandIconColumnIndex,\n direction: direction\n }), internalHooks === INTERNAL_HOOKS ? transformColumns : null),\n _useColumns2 = _slicedToArray(_useColumns, 2),\n columns = _useColumns2[0],\n flattenColumns = _useColumns2[1];\n\n var columnContext = React.useMemo(function () {\n return {\n columns: columns,\n flattenColumns: flattenColumns\n };\n }, [columns, flattenColumns]); // ====================== Scroll ======================\n\n var fullTableRef = React.useRef();\n var scrollHeaderRef = React.useRef();\n var scrollBodyRef = React.useRef();\n\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n pingedLeft = _React$useState8[0],\n setPingedLeft = _React$useState8[1];\n\n var _React$useState9 = React.useState(false),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n pingedRight = _React$useState10[0],\n setPingedRight = _React$useState10[1];\n\n var _useLayoutState = useLayoutState(new Map()),\n _useLayoutState2 = _slicedToArray(_useLayoutState, 2),\n colsWidths = _useLayoutState2[0],\n updateColsWidths = _useLayoutState2[1]; // Convert map to number width\n\n\n var colsKeys = getColumnsKey(flattenColumns);\n var pureColWidths = colsKeys.map(function (columnKey) {\n return colsWidths.get(columnKey);\n });\n var colWidths = React.useMemo(function () {\n return pureColWidths;\n }, [pureColWidths.join('_')]);\n var stickyOffsets = useStickyOffsets(colWidths, flattenColumns.length, direction);\n var fixHeader = scroll && validateValue(scroll.y);\n var horizonScroll = scroll && validateValue(scroll.x);\n var fixColumn = horizonScroll && flattenColumns.some(function (_ref2) {\n var fixed = _ref2.fixed;\n return fixed;\n }); // Sticky\n\n var stickyRef = React.useRef();\n\n var _useSticky = useSticky(sticky, prefixCls),\n isSticky = _useSticky.isSticky,\n offsetHeader = _useSticky.offsetHeader,\n offsetScroll = _useSticky.offsetScroll,\n stickyClassName = _useSticky.stickyClassName,\n container = _useSticky.container;\n\n var scrollXStyle;\n var scrollYStyle;\n var scrollTableStyle;\n\n if (fixHeader) {\n scrollYStyle = {\n overflowY: 'scroll',\n maxHeight: scroll.y\n };\n }\n\n if (horizonScroll) {\n scrollXStyle = {\n overflowX: 'auto'\n }; // When no vertical scrollbar, should hide it\n // https://github.com/ant-design/ant-design/pull/20705\n // https://github.com/ant-design/ant-design/issues/21879\n\n if (!fixHeader) {\n scrollYStyle = {\n overflowY: 'hidden'\n };\n }\n\n scrollTableStyle = {\n width: scroll.x === true ? 'auto' : scroll.x,\n minWidth: '100%'\n };\n }\n\n var onColumnResize = React.useCallback(function (columnKey, width) {\n if (isVisible(fullTableRef.current)) {\n updateColsWidths(function (widths) {\n if (widths.get(columnKey) !== width) {\n var newWidths = new Map(widths);\n newWidths.set(columnKey, width);\n return newWidths;\n }\n\n return widths;\n });\n }\n }, []);\n\n var _useTimeoutLock = useTimeoutLock(null),\n _useTimeoutLock2 = _slicedToArray(_useTimeoutLock, 2),\n setScrollTarget = _useTimeoutLock2[0],\n getScrollTarget = _useTimeoutLock2[1];\n\n function forceScroll(scrollLeft, target) {\n if (!target) {\n return;\n }\n\n if (typeof target === 'function') {\n target(scrollLeft);\n } else if (target.scrollLeft !== scrollLeft) {\n // eslint-disable-next-line no-param-reassign\n target.scrollLeft = scrollLeft;\n }\n }\n\n var onScroll = function onScroll(_ref3) {\n var currentTarget = _ref3.currentTarget,\n scrollLeft = _ref3.scrollLeft;\n var isRTL = direction === 'rtl';\n var mergedScrollLeft = typeof scrollLeft === 'number' ? scrollLeft : currentTarget.scrollLeft;\n var compareTarget = currentTarget || EMPTY_SCROLL_TARGET;\n\n if (!getScrollTarget() || getScrollTarget() === compareTarget) {\n var _stickyRef$current;\n\n setScrollTarget(compareTarget);\n forceScroll(mergedScrollLeft, scrollHeaderRef.current);\n forceScroll(mergedScrollLeft, scrollBodyRef.current);\n forceScroll(mergedScrollLeft, (_stickyRef$current = stickyRef.current) === null || _stickyRef$current === void 0 ? void 0 : _stickyRef$current.setScrollLeft);\n }\n\n if (currentTarget) {\n var scrollWidth = currentTarget.scrollWidth,\n clientWidth = currentTarget.clientWidth;\n\n if (isRTL) {\n setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth);\n setPingedRight(-mergedScrollLeft > 0);\n } else {\n setPingedLeft(mergedScrollLeft > 0);\n setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);\n }\n }\n };\n\n var triggerOnScroll = function triggerOnScroll() {\n if (scrollBodyRef.current) {\n onScroll({\n currentTarget: scrollBodyRef.current\n });\n }\n };\n\n var onFullTableResize = function onFullTableResize(_ref4) {\n var width = _ref4.width;\n triggerOnScroll();\n setComponentWidth(fullTableRef.current ? fullTableRef.current.offsetWidth : width);\n }; // Sync scroll bar when init or `horizonScroll` changed\n\n\n React.useEffect(function () {\n return triggerOnScroll;\n }, []);\n React.useEffect(function () {\n if (horizonScroll) {\n triggerOnScroll();\n }\n }, [horizonScroll]); // ================== INTERNAL HOOKS ==================\n\n React.useEffect(function () {\n if (internalHooks === INTERNAL_HOOKS && internalRefs) {\n internalRefs.body.current = scrollBodyRef.current;\n }\n }); // ====================== Render ======================\n\n var TableComponent = getComponent(['table'], 'table'); // Table layout\n\n var mergedTableLayout = React.useMemo(function () {\n if (tableLayout) {\n return tableLayout;\n } // https://github.com/ant-design/ant-design/issues/25227\n // When scroll.x is max-content, no need to fix table layout\n // it's width should stretch out to fit content\n\n\n if (fixColumn) {\n return scroll.x === 'max-content' ? 'auto' : 'fixed';\n }\n\n if (fixHeader || isSticky || flattenColumns.some(function (_ref5) {\n var ellipsis = _ref5.ellipsis;\n return ellipsis;\n })) {\n return 'fixed';\n }\n\n return 'auto';\n }, [fixHeader, fixColumn, flattenColumns, tableLayout, isSticky]);\n var groupTableNode; // Header props\n\n var headerProps = {\n colWidths: colWidths,\n columCount: flattenColumns.length,\n stickyOffsets: stickyOffsets,\n onHeaderRow: onHeaderRow,\n fixHeader: fixHeader,\n scroll: scroll\n }; // Empty\n\n var emptyNode = React.useMemo(function () {\n if (hasData) {\n return null;\n }\n\n if (typeof emptyText === 'function') {\n return emptyText();\n }\n\n return emptyText;\n }, [hasData, emptyText]); // Body\n\n var bodyTable = /*#__PURE__*/React.createElement(Body, {\n data: mergedData,\n measureColumnWidth: fixHeader || horizonScroll || isSticky,\n expandedKeys: mergedExpandedKeys,\n rowExpandable: rowExpandable,\n getRowKey: getRowKey,\n onRow: onRow,\n emptyNode: emptyNode,\n childrenColumnName: mergedChildrenColumnName\n });\n var bodyColGroup = /*#__PURE__*/React.createElement(ColGroup, {\n colWidths: flattenColumns.map(function (_ref6) {\n var width = _ref6.width;\n return width;\n }),\n columns: flattenColumns\n });\n var footerTable = summary && /*#__PURE__*/React.createElement(Footer, null, summary(mergedData));\n var customizeScrollBody = getComponent(['body']);\n\n if (process.env.NODE_ENV !== 'production' && typeof customizeScrollBody === 'function' && hasData && !fixHeader) {\n warning(false, '`components.body` with render props is only work on `scroll.y`.');\n }\n\n if (fixHeader || isSticky) {\n var bodyContent;\n\n if (typeof customizeScrollBody === 'function') {\n bodyContent = customizeScrollBody(mergedData, {\n scrollbarSize: scrollbarSize,\n ref: scrollBodyRef,\n onScroll: onScroll\n });\n headerProps.colWidths = flattenColumns.map(function (_ref7, index) {\n var width = _ref7.width;\n var colWidth = index === columns.length - 1 ? width - scrollbarSize : width;\n\n if (typeof colWidth === 'number' && !Number.isNaN(colWidth)) {\n return colWidth;\n }\n\n warning(false, 'When use `components.body` with render props. Each column should have a fixed `width` value.');\n return 0;\n });\n } else {\n bodyContent = /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, scrollXStyle), scrollYStyle),\n onScroll: onScroll,\n ref: scrollBodyRef,\n className: classNames(\"\".concat(prefixCls, \"-body\"))\n }, /*#__PURE__*/React.createElement(TableComponent, {\n style: _objectSpread(_objectSpread({}, scrollTableStyle), {}, {\n tableLayout: mergedTableLayout\n })\n }, bodyColGroup, bodyTable, footerTable));\n }\n\n groupTableNode = /*#__PURE__*/React.createElement(React.Fragment, null, showHeader !== false && /*#__PURE__*/React.createElement(FixedHeader, _extends({\n noData: !mergedData.length,\n maxContentScroll: horizonScroll && scroll.x === 'max-content'\n }, headerProps, columnContext, {\n direction: direction // Fixed Props\n ,\n offsetHeader: offsetHeader,\n stickyClassName: stickyClassName,\n ref: scrollHeaderRef,\n onScroll: onScroll\n })), bodyContent, isSticky && /*#__PURE__*/React.createElement(StickyScrollBar, {\n ref: stickyRef,\n offsetScroll: offsetScroll,\n scrollBodyRef: scrollBodyRef,\n onScroll: onScroll,\n container: container\n }));\n } else {\n groupTableNode = /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, scrollXStyle), scrollYStyle),\n className: classNames(\"\".concat(prefixCls, \"-content\")),\n onScroll: onScroll,\n ref: scrollBodyRef\n }, /*#__PURE__*/React.createElement(TableComponent, {\n style: _objectSpread(_objectSpread({}, scrollTableStyle), {}, {\n tableLayout: mergedTableLayout\n })\n }, bodyColGroup, showHeader !== false && /*#__PURE__*/React.createElement(Header, _extends({}, headerProps, columnContext)), bodyTable, footerTable));\n }\n\n var ariaProps = getDataAndAriaProps(props);\n var fullTable = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ping-left\"), pingedLeft), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ping-right\"), pingedRight), _defineProperty(_classNames, \"\".concat(prefixCls, \"-layout-fixed\"), tableLayout === 'fixed'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-fixed-header\"), fixHeader), _defineProperty(_classNames, \"\".concat(prefixCls, \"-fixed-column\"), fixColumn), _defineProperty(_classNames, \"\".concat(prefixCls, \"-scroll-horizontal\"), horizonScroll), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-fix-left\"), flattenColumns[0] && flattenColumns[0].fixed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-fix-right\"), flattenColumns[flattenColumns.length - 1] && flattenColumns[flattenColumns.length - 1].fixed === 'right'), _classNames)),\n style: style,\n id: id,\n ref: fullTableRef\n }, ariaProps), /*#__PURE__*/React.createElement(MemoTableContent, {\n pingLeft: pingedLeft,\n pingRight: pingedRight,\n props: _objectSpread(_objectSpread({}, props), {}, {\n stickyOffsets: stickyOffsets,\n mergedExpandedKeys: mergedExpandedKeys\n })\n }, title && /*#__PURE__*/React.createElement(Panel, {\n className: \"\".concat(prefixCls, \"-title\")\n }, title(mergedData)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-container\")\n }, groupTableNode), footer && /*#__PURE__*/React.createElement(Panel, {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer(mergedData))));\n\n if (horizonScroll) {\n fullTable = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onFullTableResize\n }, fullTable);\n }\n\n var TableContextValue = React.useMemo(function () {\n return {\n prefixCls: prefixCls,\n getComponent: getComponent,\n scrollbarSize: scrollbarSize,\n direction: direction,\n fixedInfoList: flattenColumns.map(function (_, colIndex) {\n return getCellFixedInfo(colIndex, colIndex, flattenColumns, stickyOffsets, direction);\n }),\n isSticky: isSticky\n };\n }, [prefixCls, getComponent, scrollbarSize, direction, flattenColumns, stickyOffsets, direction, isSticky]);\n var BodyContextValue = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, columnContext), {}, {\n tableLayout: mergedTableLayout,\n rowClassName: rowClassName,\n expandedRowClassName: expandedRowClassName,\n componentWidth: componentWidth,\n fixHeader: fixHeader,\n fixColumn: fixColumn,\n horizonScroll: horizonScroll,\n expandIcon: mergedExpandIcon,\n expandableType: expandableType,\n expandRowByClick: expandRowByClick,\n expandedRowRender: expandedRowRender,\n onTriggerExpand: onTriggerExpand,\n expandIconColumnIndex: expandIconColumnIndex,\n indentSize: indentSize\n });\n }, [columnContext, mergedTableLayout, rowClassName, expandedRowClassName, componentWidth, fixHeader, fixColumn, horizonScroll, mergedExpandIcon, expandableType, expandRowByClick, expandedRowRender, onTriggerExpand, expandIconColumnIndex, indentSize]);\n var ResizeContextValue = React.useMemo(function () {\n return {\n onColumnResize: onColumnResize\n };\n }, [onColumnResize]);\n return /*#__PURE__*/React.createElement(TableContext.Provider, {\n value: TableContextValue\n }, /*#__PURE__*/React.createElement(BodyContext.Provider, {\n value: BodyContextValue\n }, /*#__PURE__*/React.createElement(ResizeContext.Provider, {\n value: ResizeContextValue\n }, fullTable)));\n}\n\nTable.Column = Column;\nTable.ColumnGroup = ColumnGroup;\nTable.Summary = FooterComponents;\nTable.defaultProps = {\n rowKey: 'key',\n prefixCls: 'rc-table',\n emptyText: function emptyText() {\n return 'No Data';\n }\n};\nexport default Table;","import Table from './Table';\nimport { FooterComponents as Summary } from './Footer';\nimport Column from './sugar/Column';\nimport ColumnGroup from './sugar/ColumnGroup';\nimport { INTERNAL_COL_DEFINE } from './utils/legacyUtil';\nexport { Summary, Column, ColumnGroup, INTERNAL_COL_DEFINE };\nexport default Table;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport debounce from 'lodash/debounce';\nimport { ConfigConsumer } from '../config-provider';\nimport { tuple } from '../_util/type';\nimport { isValidElement, cloneElement } from '../_util/reactNode';\nvar SpinSizes = tuple('small', 'default', 'large'); // Render indicator\n\nvar defaultIndicator = null;\n\nfunction renderIndicator(prefixCls, props) {\n var indicator = props.indicator;\n var dotClassName = \"\".concat(prefixCls, \"-dot\"); // should not be render default indicator when indicator value is null\n\n if (indicator === null) {\n return null;\n }\n\n if (isValidElement(indicator)) {\n return cloneElement(indicator, {\n className: classNames(indicator.props.className, dotClassName)\n });\n }\n\n if (isValidElement(defaultIndicator)) {\n return cloneElement(defaultIndicator, {\n className: classNames(defaultIndicator.props.className, dotClassName)\n });\n }\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, \"\".concat(prefixCls, \"-dot-spin\"))\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }));\n}\n\nfunction shouldDelay(spinning, delay) {\n return !!spinning && !!delay && !isNaN(Number(delay));\n}\n\nvar Spin = /*#__PURE__*/function (_React$Component) {\n _inherits(Spin, _React$Component);\n\n var _super = _createSuper(Spin);\n\n function Spin(props) {\n var _this;\n\n _classCallCheck(this, Spin);\n\n _this = _super.call(this, props);\n\n _this.debouncifyUpdateSpinning = function (props) {\n var _ref = props || _this.props,\n delay = _ref.delay;\n\n if (delay) {\n _this.cancelExistingSpin();\n\n _this.updateSpinning = debounce(_this.originalUpdateSpinning, delay);\n }\n };\n\n _this.updateSpinning = function () {\n var spinning = _this.props.spinning;\n var currentSpinning = _this.state.spinning;\n\n if (currentSpinning !== spinning) {\n _this.setState({\n spinning: spinning\n });\n }\n };\n\n _this.renderSpin = function (_ref2) {\n var _classNames;\n\n var getPrefixCls = _ref2.getPrefixCls,\n direction = _ref2.direction;\n\n var _a = _this.props,\n customizePrefixCls = _a.prefixCls,\n className = _a.className,\n size = _a.size,\n tip = _a.tip,\n wrapperClassName = _a.wrapperClassName,\n style = _a.style,\n restProps = __rest(_a, [\"prefixCls\", \"className\", \"size\", \"tip\", \"wrapperClassName\", \"style\"]);\n\n var spinning = _this.state.spinning;\n var prefixCls = getPrefixCls('spin', customizePrefixCls);\n var spinClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-spinning\"), spinning), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-text\"), !!tip), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className); // fix https://fb.me/react-unknown-prop\n\n var divProps = omit(restProps, ['spinning', 'delay', 'indicator']);\n var spinElement = /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n style: style,\n className: spinClassName\n }), renderIndicator(prefixCls, _this.props), tip ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-text\")\n }, tip) : null);\n\n if (_this.isNestedPattern()) {\n var containerClassName = classNames(\"\".concat(prefixCls, \"-container\"), _defineProperty({}, \"\".concat(prefixCls, \"-blur\"), spinning));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n className: classNames(\"\".concat(prefixCls, \"-nested-loading\"), wrapperClassName)\n }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n key: \"loading\"\n }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n key: \"container\"\n }, _this.props.children));\n }\n\n return spinElement;\n };\n\n var spinning = props.spinning,\n delay = props.delay;\n var shouldBeDelayed = shouldDelay(spinning, delay);\n _this.state = {\n spinning: spinning && !shouldBeDelayed\n };\n _this.originalUpdateSpinning = _this.updateSpinning;\n\n _this.debouncifyUpdateSpinning(props);\n\n return _this;\n }\n\n _createClass(Spin, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateSpinning();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.debouncifyUpdateSpinning();\n this.updateSpinning();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelExistingSpin();\n }\n }, {\n key: \"cancelExistingSpin\",\n value: function cancelExistingSpin() {\n var updateSpinning = this.updateSpinning;\n\n if (updateSpinning && updateSpinning.cancel) {\n updateSpinning.cancel();\n }\n }\n }, {\n key: \"isNestedPattern\",\n value: function isNestedPattern() {\n return !!(this.props && typeof this.props.children !== 'undefined');\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, this.renderSpin);\n }\n }], [{\n key: \"setDefaultIndicator\",\n value: function setDefaultIndicator(indicator) {\n defaultIndicator = indicator;\n }\n }]);\n\n return Spin;\n}(React.Component);\n\nSpin.defaultProps = {\n spinning: true,\n size: 'default',\n wrapperClassName: ''\n};\nexport default Spin;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\n\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Pager = function Pager(props) {\n var _classNames;\n\n var prefixCls = \"\".concat(props.rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), props.active), _defineProperty(_classNames, props.className, !!props.className), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !props.page), _classNames));\n\n var handleClick = function handleClick() {\n props.onClick(props.page);\n };\n\n var handleKeyPress = function handleKeyPress(e) {\n props.onKeyPress(e, props.onClick, props.page);\n };\n\n return /*#__PURE__*/React.createElement(\"li\", {\n title: props.showTitle ? props.page : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: \"0\"\n }, props.itemRender(props.page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, props.page)));\n};\n\nexport default Pager;","export default {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n/* eslint react/prop-types: 0 */\n\nimport React from 'react';\nimport KEYCODE from './KeyCode';\n\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n\n var _super = _createSuper(Options);\n\n function Options() {\n var _this;\n\n _classCallCheck(this, Options);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n\n if (goButton || goInputText === '') {\n return;\n }\n\n _this.setState({\n goInputText: ''\n });\n\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n\n quickGo(_this.getValidValue());\n };\n\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n\n if (goInputText === '') {\n return;\n }\n\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n\n _this.props.quickGo(_this.getValidValue());\n }\n };\n\n return _this;\n }\n\n _createClass(Options, [{\n key: \"getValidValue\",\n value: function getValidValue() {\n var goInputText = this.state.goInputText; // eslint-disable-next-line no-restricted-globals\n\n return !goInputText || isNaN(goInputText) ? undefined : Number(goInputText);\n }\n }, {\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = isNaN(Number(a)) ? 0 : Number(a); // eslint-disable-next-line no-restricted-globals\n\n var numberB = isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n\n if (!changeSize && !quickGo) {\n return null;\n }\n\n var pageSizeOptions = this.getPageSizeOptions();\n\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n }\n }, options);\n }\n\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur\n }), locale.page, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n\n return Options;\n}(React.Component);\n\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n/* eslint react/prop-types: 0 */\n\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Pager from './Pager';\nimport Options from './Options';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\n\nfunction noop() {}\n\nfunction isInteger(value) {\n return (// eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && isFinite(value) && Math.floor(value) === value\n );\n}\n\nfunction defaultItemRender(page, type, element) {\n return element;\n}\n\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n\n var _super = _createSuper(Pagination);\n\n function Pagination(props) {\n var _this;\n\n _classCallCheck(this, Pagination);\n\n _this = _super.call(this, props);\n\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, _this.props));\n }\n\n return iconNode;\n };\n\n _this.savePaginationNode = function (node) {\n _this.paginationNode = node;\n };\n\n _this.isValid = function (page) {\n return isInteger(page) && page !== _this.state.current;\n };\n\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n pageSize = _this$props.pageSize,\n total = _this$props.total;\n\n if (total <= pageSize) {\n return false;\n }\n\n return showQuickJumper;\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n\n var currentInputValue = _this.state.currentInputValue;\n\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current; // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n\n _this.props.onShowSizeChange(current, size);\n\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n\n _this.handleChange = function (p) {\n var disabled = _this.props.disabled;\n var page = p;\n\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n\n if (page > currentPage) {\n page = currentPage;\n } else if (page < 1) {\n page = 1;\n }\n\n if (!('current' in _this.props)) {\n _this.setState({\n current: page,\n currentInputValue: page\n });\n }\n\n var pageSize = _this.state.pageSize;\n\n _this.props.onChange(page, pageSize);\n\n return page;\n }\n\n return _this.state.current;\n };\n\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n\n callback.apply(void 0, restParams);\n }\n };\n\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n\n var _current = props.defaultCurrent;\n\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n\n var _pageSize = props.defaultPageSize;\n\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n\n if (prevState.current !== this.state.current && this.paginationNode) {\n var lastCurrentNode = this.paginationNode.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n\n if (inputValue === '') {\n value = inputValue; // eslint-disable-next-line no-restricted-globals\n } else if (isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props2 = this.props,\n showSizeChanger = _this$props2.showSizeChanger,\n total = _this$props2.total,\n totalBoundaryShowSizeChanger = _this$props2.totalBoundaryShowSizeChanger;\n\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"renderPrev\",\n value: function renderPrev(prevPage) {\n var _this$props3 = this.props,\n prevIcon = _this$props3.prevIcon,\n itemRender = _this$props3.itemRender;\n var prevButton = itemRender(prevPage, 'prev', this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !this.hasPrev();\n return /*#__PURE__*/isValidElement(prevButton) ? /*#__PURE__*/cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n }\n }, {\n key: \"renderNext\",\n value: function renderNext(nextPage) {\n var _this$props4 = this.props,\n nextIcon = _this$props4.nextIcon,\n itemRender = _this$props4.itemRender;\n var nextButton = itemRender(nextPage, 'next', this.getItemIcon(nextIcon, 'next page'));\n var disabled = !this.hasNext();\n return /*#__PURE__*/isValidElement(nextButton) ? /*#__PURE__*/cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n prefixCls = _this$props5.prefixCls,\n className = _this$props5.className,\n style = _this$props5.style,\n disabled = _this$props5.disabled,\n hideOnSinglePage = _this$props5.hideOnSinglePage,\n total = _this$props5.total,\n locale = _this$props5.locale,\n showQuickJumper = _this$props5.showQuickJumper,\n showLessItems = _this$props5.showLessItems,\n showTitle = _this$props5.showTitle,\n showTotal = _this$props5.showTotal,\n simple = _this$props5.simple,\n itemRender = _this$props5.itemRender,\n showPrevNextJumpers = _this$props5.showPrevNextJumpers,\n jumpPrevIcon = _this$props5.jumpPrevIcon,\n jumpNextIcon = _this$props5.jumpNextIcon,\n selectComponentClass = _this$props5.selectComponentClass,\n selectPrefixCls = _this$props5.selectPrefixCls,\n pageSizeOptions = _this$props5.pageSizeOptions;\n var _this$state = this.state,\n current = _this$state.current,\n pageSize = _this$state.pageSize,\n currentInputValue = _this$state.currentInputValue; // When hideOnSinglePage is true and there is only 1 page, hide the pager\n\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = _this2.props[key];\n }\n\n return prev;\n }, {});\n\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n size: \"3\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: allPages,\n className: \"\".concat(prefixCls, \"-disabled\")\n })));\n }\n\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: \"0\",\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: \"0\",\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = /*#__PURE__*/cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n\n var totalText = null;\n\n if (showTotal) {\n totalText = /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n }\n\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n unselectable: \"unselectable\",\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n\n if ('current' in props) {\n newState.current = props.current;\n\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n\n newState.pageSize = props.pageSize;\n }\n\n return newState;\n }\n }]);\n\n return Pagination;\n}(React.Component);\n\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页'\n};","// This icon file is generated automatically.\nvar DoubleLeftOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\"\n }\n }]\n },\n \"name\": \"double-left\",\n \"theme\": \"outlined\"\n};\nexport default DoubleLeftOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\n\nDoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\"\n }\n }]\n },\n \"name\": \"double-right\",\n \"theme\": \"outlined\"\n};\nexport default DoubleRightOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\n\nDoubleRightOutlined.displayName = 'DoubleRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Select from '../select';\n\nvar MiniSelect = function MiniSelect(props) {\n return /*#__PURE__*/React.createElement(Select, _extends({\n size: \"small\"\n }, props));\n};\n\nMiniSelect.Option = Select.Option;\nexport default MiniSelect;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport classNames from 'classnames';\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport MiniSelect from './MiniSelect';\nimport Select from '../select';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { ConfigContext } from '../config-provider';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\n\nvar Pagination = function Pagination(_a) {\n var customizePrefixCls = _a.prefixCls,\n customizeSelectPrefixCls = _a.selectPrefixCls,\n className = _a.className,\n size = _a.size,\n customLocale = _a.locale,\n restProps = __rest(_a, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"size\", \"locale\"]);\n\n var _useBreakpoint = useBreakpoint(),\n xs = _useBreakpoint.xs;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n\n var getIconsProps = function getIconsProps() {\n var ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-ellipsis\")\n }, \"\\u2022\\u2022\\u2022\");\n var prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(LeftOutlined, null));\n var nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(RightOutlined, null));\n var jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n var jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis)); // change arrows direction in right-to-left direction\n\n if (direction === 'rtl') {\n var _ref = [nextIcon, prevIcon];\n prevIcon = _ref[0];\n nextIcon = _ref[1];\n var _ref2 = [jumpNextIcon, jumpPrevIcon];\n jumpPrevIcon = _ref2[0];\n jumpNextIcon = _ref2[1];\n }\n\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n };\n\n var renderPagination = function renderPagination(contextLocale) {\n var locale = _extends(_extends({}, contextLocale), customLocale);\n\n var isSmall = size === 'small' || !!(xs && !size && restProps.responsive);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n var extendedClassName = classNames(_defineProperty({\n mini: isSmall\n }, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(RcPagination, _extends({}, restProps, {\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls\n }, getIconsProps(), {\n className: extendedClassName,\n selectComponentClass: isSmall ? MiniSelect : Select,\n locale: locale\n }));\n };\n\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Pagination\",\n defaultLocale: enUS\n }, renderPagination);\n};\n\nexport default Pagination;","import Pagination from './Pagination';\nexport default Pagination;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport { useState } from 'react';\nexport var DEFAULT_PAGE_SIZE = 10;\nexport function getPaginationParam(pagination, mergedPagination) {\n var param = {\n current: mergedPagination.current,\n pageSize: mergedPagination.pageSize\n };\n var paginationObj = pagination && _typeof(pagination) === 'object' ? pagination : {};\n Object.keys(paginationObj).forEach(function (pageProp) {\n var value = mergedPagination[pageProp];\n\n if (typeof value !== 'function') {\n param[pageProp] = value;\n }\n });\n return param;\n}\n\nfunction extendsObject() {\n var result = {};\n\n for (var _len = arguments.length, list = new Array(_len), _key = 0; _key < _len; _key++) {\n list[_key] = arguments[_key];\n }\n\n list.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key];\n\n if (val !== undefined) {\n result[key] = val;\n }\n });\n }\n });\n return result;\n}\n\nexport default function usePagination(total, pagination, onChange) {\n var _a = pagination && _typeof(pagination) === 'object' ? pagination : {},\n _a$total = _a.total,\n paginationTotal = _a$total === void 0 ? 0 : _a$total,\n paginationObj = __rest(_a, [\"total\"]);\n\n var _useState = useState(function () {\n return {\n current: 'defaultCurrent' in paginationObj ? paginationObj.defaultCurrent : 1,\n pageSize: 'defaultPageSize' in paginationObj ? paginationObj.defaultPageSize : DEFAULT_PAGE_SIZE\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerPagination = _useState2[0],\n setInnerPagination = _useState2[1]; // ============ Basic Pagination Config ============\n\n\n var mergedPagination = extendsObject(innerPagination, paginationObj, {\n total: paginationTotal > 0 ? paginationTotal : total\n }); // Reset `current` if data length or pageSize changed\n\n var maxPage = Math.ceil((paginationTotal || total) / mergedPagination.pageSize);\n\n if (mergedPagination.current > maxPage) {\n // Prevent a maximum page count of 0\n mergedPagination.current = maxPage || 1;\n }\n\n var refreshPagination = function refreshPagination() {\n var current = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var pageSize = arguments.length > 1 ? arguments[1] : undefined;\n setInnerPagination({\n current: current,\n pageSize: pageSize || mergedPagination.pageSize\n });\n };\n\n var onInternalChange = function onInternalChange(current, pageSize) {\n var _a;\n\n if (pagination) {\n (_a = pagination.onChange) === null || _a === void 0 ? void 0 : _a.call(pagination, current, pageSize);\n }\n\n refreshPagination(current, pageSize);\n onChange(current, pageSize || (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.pageSize));\n };\n\n if (pagination === false) {\n return [{}, function () {}];\n }\n\n return [_extends(_extends({}, mergedPagination), {\n onChange: onInternalChange\n }), refreshPagination];\n}","/**\n * Webpack has bug for import loop, which is not the same behavior as ES module.\n * When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.\n */\nimport * as React from 'react';\nexport var TreeContext = /*#__PURE__*/React.createContext(null);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\n\nvar Indent = function Indent(_ref) {\n var prefixCls = _ref.prefixCls,\n level = _ref.level,\n isStart = _ref.isStart,\n isEnd = _ref.isEnd;\n var baseClassName = \"\".concat(prefixCls, \"-indent-unit\");\n var list = [];\n\n for (var i = 0; i < level; i += 1) {\n var _classNames;\n\n list.push( /*#__PURE__*/React.createElement(\"span\", {\n key: i,\n className: classNames(baseClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(baseClassName, \"-start\"), isStart[i]), _defineProperty(_classNames, \"\".concat(baseClassName, \"-end\"), isEnd[i]), _classNames))\n }));\n }\n\n return /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-indent\")\n }, list);\n};\n\nexport default Indent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport classNames from 'classnames'; // @ts-ignore\n\nimport { TreeContext } from './contextTypes';\nimport { getDataAndAria } from './util';\nimport Indent from './Indent';\nimport { convertNodePropsToEventData } from './utils/treeUtil';\nvar ICON_OPEN = 'open';\nvar ICON_CLOSE = 'close';\nvar defaultTitle = '---';\n\nvar InternalTreeNode = /*#__PURE__*/function (_React$Component) {\n _inherits(InternalTreeNode, _React$Component);\n\n var _super = _createSuper(InternalTreeNode);\n\n function InternalTreeNode() {\n var _this;\n\n _classCallCheck(this, InternalTreeNode);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n dragNodeHighlight: false\n };\n\n _this.onSelectorClick = function (e) {\n // Click trigger before select/check operation\n var onNodeClick = _this.props.context.onNodeClick;\n onNodeClick(e, convertNodePropsToEventData(_this.props));\n\n if (_this.isSelectable()) {\n _this.onSelect(e);\n } else {\n _this.onCheck(e);\n }\n };\n\n _this.onSelectorDoubleClick = function (e) {\n var onNodeDoubleClick = _this.props.context.onNodeDoubleClick;\n onNodeDoubleClick(e, convertNodePropsToEventData(_this.props));\n };\n\n _this.onSelect = function (e) {\n if (_this.isDisabled()) return;\n var onNodeSelect = _this.props.context.onNodeSelect;\n e.preventDefault();\n onNodeSelect(e, convertNodePropsToEventData(_this.props));\n };\n\n _this.onCheck = function (e) {\n if (_this.isDisabled()) return;\n var _this$props = _this.props,\n disableCheckbox = _this$props.disableCheckbox,\n checked = _this$props.checked;\n var onNodeCheck = _this.props.context.onNodeCheck;\n if (!_this.isCheckable() || disableCheckbox) return;\n e.preventDefault();\n var targetChecked = !checked;\n onNodeCheck(e, convertNodePropsToEventData(_this.props), targetChecked);\n };\n\n _this.onMouseEnter = function (e) {\n var onNodeMouseEnter = _this.props.context.onNodeMouseEnter;\n onNodeMouseEnter(e, convertNodePropsToEventData(_this.props));\n };\n\n _this.onMouseLeave = function (e) {\n var onNodeMouseLeave = _this.props.context.onNodeMouseLeave;\n onNodeMouseLeave(e, convertNodePropsToEventData(_this.props));\n };\n\n _this.onContextMenu = function (e) {\n var onNodeContextMenu = _this.props.context.onNodeContextMenu;\n onNodeContextMenu(e, convertNodePropsToEventData(_this.props));\n };\n\n _this.onDragStart = function (e) {\n var onNodeDragStart = _this.props.context.onNodeDragStart;\n e.stopPropagation();\n\n _this.setState({\n dragNodeHighlight: true\n });\n\n onNodeDragStart(e, _assertThisInitialized(_this));\n\n try {\n // ie throw error\n // firefox-need-it\n e.dataTransfer.setData('text/plain', '');\n } catch (error) {// empty\n }\n };\n\n _this.onDragEnter = function (e) {\n var onNodeDragEnter = _this.props.context.onNodeDragEnter;\n e.preventDefault();\n e.stopPropagation();\n onNodeDragEnter(e, _assertThisInitialized(_this));\n };\n\n _this.onDragOver = function (e) {\n var onNodeDragOver = _this.props.context.onNodeDragOver;\n e.preventDefault();\n e.stopPropagation();\n onNodeDragOver(e, _assertThisInitialized(_this));\n };\n\n _this.onDragLeave = function (e) {\n var onNodeDragLeave = _this.props.context.onNodeDragLeave;\n e.stopPropagation();\n onNodeDragLeave(e, _assertThisInitialized(_this));\n };\n\n _this.onDragEnd = function (e) {\n var onNodeDragEnd = _this.props.context.onNodeDragEnd;\n e.stopPropagation();\n\n _this.setState({\n dragNodeHighlight: false\n });\n\n onNodeDragEnd(e, _assertThisInitialized(_this));\n };\n\n _this.onDrop = function (e) {\n var onNodeDrop = _this.props.context.onNodeDrop;\n e.preventDefault();\n e.stopPropagation();\n\n _this.setState({\n dragNodeHighlight: false\n });\n\n onNodeDrop(e, _assertThisInitialized(_this));\n }; // Disabled item still can be switch\n\n\n _this.onExpand = function (e) {\n var _this$props2 = _this.props,\n loading = _this$props2.loading,\n onNodeExpand = _this$props2.context.onNodeExpand;\n if (loading) return;\n onNodeExpand(e, convertNodePropsToEventData(_this.props));\n }; // Drag usage\n\n\n _this.setSelectHandle = function (node) {\n _this.selectHandle = node;\n };\n\n _this.getNodeState = function () {\n var expanded = _this.props.expanded;\n\n if (_this.isLeaf()) {\n return null;\n }\n\n return expanded ? ICON_OPEN : ICON_CLOSE;\n };\n\n _this.hasChildren = function () {\n var eventKey = _this.props.eventKey;\n var keyEntities = _this.props.context.keyEntities;\n\n var _ref = keyEntities[eventKey] || {},\n children = _ref.children;\n\n return !!(children || []).length;\n };\n\n _this.isLeaf = function () {\n var _this$props3 = _this.props,\n isLeaf = _this$props3.isLeaf,\n loaded = _this$props3.loaded;\n var loadData = _this.props.context.loadData;\n\n var hasChildren = _this.hasChildren();\n\n if (isLeaf === false) {\n return false;\n }\n\n return isLeaf || !loadData && !hasChildren || loadData && loaded && !hasChildren;\n };\n\n _this.isDisabled = function () {\n var disabled = _this.props.disabled;\n var treeDisabled = _this.props.context.disabled;\n return !!(treeDisabled || disabled);\n };\n\n _this.isCheckable = function () {\n var checkable = _this.props.checkable;\n var treeCheckable = _this.props.context.checkable; // Return false if tree or treeNode is not checkable\n\n if (!treeCheckable || checkable === false) return false;\n return treeCheckable;\n }; // Load data to avoid default expanded tree without data\n\n\n _this.syncLoadData = function (props) {\n var expanded = props.expanded,\n loading = props.loading,\n loaded = props.loaded;\n var _this$props$context = _this.props.context,\n loadData = _this$props$context.loadData,\n onNodeLoad = _this$props$context.onNodeLoad;\n if (loading) return; // read from state to avoid loadData at same time\n\n if (loadData && expanded && !_this.isLeaf()) {\n // We needn't reload data when has children in sync logic\n // It's only needed in node expanded\n if (!_this.hasChildren() && !loaded) {\n onNodeLoad(convertNodePropsToEventData(_this.props));\n }\n }\n };\n\n _this.renderSwitcherIconDom = function (isLeaf) {\n var switcherIconFromProps = _this.props.switcherIcon;\n var switcherIconFromCtx = _this.props.context.switcherIcon;\n var switcherIcon = switcherIconFromProps || switcherIconFromCtx; // if switcherIconDom is null, no render switcher span\n\n if (typeof switcherIcon === 'function') {\n return switcherIcon(_objectSpread(_objectSpread({}, _this.props), {}, {\n isLeaf: isLeaf\n }));\n }\n\n return switcherIcon;\n }; // Switcher\n\n\n _this.renderSwitcher = function () {\n var expanded = _this.props.expanded;\n var prefixCls = _this.props.context.prefixCls;\n\n if (_this.isLeaf()) {\n // if switcherIconDom is null, no render switcher span\n var _switcherIconDom = _this.renderSwitcherIconDom(true);\n\n return _switcherIconDom !== false ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-switcher\"), \"\".concat(prefixCls, \"-switcher-noop\"))\n }, _switcherIconDom) : null;\n }\n\n var switcherCls = classNames(\"\".concat(prefixCls, \"-switcher\"), \"\".concat(prefixCls, \"-switcher_\").concat(expanded ? ICON_OPEN : ICON_CLOSE));\n\n var switcherIconDom = _this.renderSwitcherIconDom(false);\n\n return switcherIconDom !== false ? /*#__PURE__*/React.createElement(\"span\", {\n onClick: _this.onExpand,\n className: switcherCls\n }, switcherIconDom) : null;\n }; // Checkbox\n\n\n _this.renderCheckbox = function () {\n var _this$props4 = _this.props,\n checked = _this$props4.checked,\n halfChecked = _this$props4.halfChecked,\n disableCheckbox = _this$props4.disableCheckbox;\n var prefixCls = _this.props.context.prefixCls;\n\n var disabled = _this.isDisabled();\n\n var checkable = _this.isCheckable();\n\n if (!checkable) return null; // [Legacy] Custom element should be separate with `checkable` in future\n\n var $custom = typeof checkable !== 'boolean' ? checkable : null;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-checkbox\"), checked && \"\".concat(prefixCls, \"-checkbox-checked\"), !checked && halfChecked && \"\".concat(prefixCls, \"-checkbox-indeterminate\"), (disabled || disableCheckbox) && \"\".concat(prefixCls, \"-checkbox-disabled\")),\n onClick: _this.onCheck\n }, $custom);\n };\n\n _this.renderIcon = function () {\n var loading = _this.props.loading;\n var prefixCls = _this.props.context.prefixCls;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-iconEle\"), \"\".concat(prefixCls, \"-icon__\").concat(_this.getNodeState() || 'docu'), loading && \"\".concat(prefixCls, \"-icon_loading\"))\n });\n }; // Icon + Title\n\n\n _this.renderSelector = function () {\n var dragNodeHighlight = _this.state.dragNodeHighlight;\n var _this$props5 = _this.props,\n title = _this$props5.title,\n selected = _this$props5.selected,\n icon = _this$props5.icon,\n loading = _this$props5.loading,\n data = _this$props5.data;\n var _this$props$context2 = _this.props.context,\n prefixCls = _this$props$context2.prefixCls,\n showIcon = _this$props$context2.showIcon,\n treeIcon = _this$props$context2.icon,\n draggable = _this$props$context2.draggable,\n loadData = _this$props$context2.loadData,\n titleRender = _this$props$context2.titleRender;\n\n var disabled = _this.isDisabled();\n\n var mergedDraggable = typeof draggable === 'function' ? draggable(data) : draggable;\n var wrapClass = \"\".concat(prefixCls, \"-node-content-wrapper\"); // Icon - Still show loading icon when loading without showIcon\n\n var $icon;\n\n if (showIcon) {\n var currentIcon = icon || treeIcon;\n $icon = currentIcon ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-iconEle\"), \"\".concat(prefixCls, \"-icon__customize\"))\n }, typeof currentIcon === 'function' ? currentIcon(_this.props) : currentIcon) : _this.renderIcon();\n } else if (loadData && loading) {\n $icon = _this.renderIcon();\n } // Title\n\n\n var titleNode;\n\n if (typeof title === 'function') {\n titleNode = title(data);\n } else if (titleRender) {\n titleNode = titleRender(data);\n } else {\n titleNode = title;\n }\n\n var $title = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-title\")\n }, titleNode);\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: _this.setSelectHandle,\n title: typeof title === 'string' ? title : '',\n className: classNames(\"\".concat(wrapClass), \"\".concat(wrapClass, \"-\").concat(_this.getNodeState() || 'normal'), !disabled && (selected || dragNodeHighlight) && \"\".concat(prefixCls, \"-node-selected\"), !disabled && mergedDraggable && 'draggable'),\n draggable: !disabled && mergedDraggable || undefined,\n \"aria-grabbed\": !disabled && mergedDraggable || undefined,\n onMouseEnter: _this.onMouseEnter,\n onMouseLeave: _this.onMouseLeave,\n onContextMenu: _this.onContextMenu,\n onClick: _this.onSelectorClick,\n onDoubleClick: _this.onSelectorDoubleClick,\n onDragStart: mergedDraggable ? _this.onDragStart : undefined\n }, $icon, $title, _this.renderDropIndicator());\n };\n\n _this.renderDropIndicator = function () {\n var _this$props6 = _this.props,\n disabled = _this$props6.disabled,\n eventKey = _this$props6.eventKey;\n var _this$props$context3 = _this.props.context,\n draggable = _this$props$context3.draggable,\n dropLevelOffset = _this$props$context3.dropLevelOffset,\n dropPosition = _this$props$context3.dropPosition,\n prefixCls = _this$props$context3.prefixCls,\n indent = _this$props$context3.indent,\n dropIndicatorRender = _this$props$context3.dropIndicatorRender,\n dragOverNodeKey = _this$props$context3.dragOverNodeKey,\n direction = _this$props$context3.direction;\n var mergedDraggable = draggable !== false; // allowDrop is calculated in Tree.tsx, there is no need for calc it here\n\n var showIndicator = !disabled && mergedDraggable && dragOverNodeKey === eventKey;\n return showIndicator ? dropIndicatorRender({\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n indent: indent,\n prefixCls: prefixCls,\n direction: direction\n }) : null;\n };\n\n return _this;\n } // Isomorphic needn't load data in server side\n\n\n _createClass(InternalTreeNode, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.syncLoadData(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.syncLoadData(this.props);\n }\n }, {\n key: \"isSelectable\",\n value: function isSelectable() {\n var selectable = this.props.selectable;\n var treeSelectable = this.props.context.selectable; // Ignore when selectable is undefined or null\n\n if (typeof selectable === 'boolean') {\n return selectable;\n }\n\n return treeSelectable;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props7 = this.props,\n eventKey = _this$props7.eventKey,\n className = _this$props7.className,\n style = _this$props7.style,\n dragOver = _this$props7.dragOver,\n dragOverGapTop = _this$props7.dragOverGapTop,\n dragOverGapBottom = _this$props7.dragOverGapBottom,\n isLeaf = _this$props7.isLeaf,\n isStart = _this$props7.isStart,\n isEnd = _this$props7.isEnd,\n expanded = _this$props7.expanded,\n selected = _this$props7.selected,\n checked = _this$props7.checked,\n halfChecked = _this$props7.halfChecked,\n loading = _this$props7.loading,\n domRef = _this$props7.domRef,\n active = _this$props7.active,\n data = _this$props7.data,\n onMouseMove = _this$props7.onMouseMove,\n otherProps = _objectWithoutProperties(_this$props7, [\"eventKey\", \"className\", \"style\", \"dragOver\", \"dragOverGapTop\", \"dragOverGapBottom\", \"isLeaf\", \"isStart\", \"isEnd\", \"expanded\", \"selected\", \"checked\", \"halfChecked\", \"loading\", \"domRef\", \"active\", \"data\", \"onMouseMove\"]);\n\n var _this$props$context4 = this.props.context,\n prefixCls = _this$props$context4.prefixCls,\n filterTreeNode = _this$props$context4.filterTreeNode,\n draggable = _this$props$context4.draggable,\n keyEntities = _this$props$context4.keyEntities,\n dropContainerKey = _this$props$context4.dropContainerKey,\n dropTargetKey = _this$props$context4.dropTargetKey;\n var disabled = this.isDisabled();\n var dataOrAriaAttributeProps = getDataAndAria(otherProps);\n\n var _ref2 = keyEntities[eventKey] || {},\n level = _ref2.level;\n\n var isEndNode = isEnd[isEnd.length - 1];\n var mergedDraggable = typeof draggable === 'function' ? draggable(data) : draggable;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: domRef,\n className: classNames(className, \"\".concat(prefixCls, \"-treenode\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-switcher-\").concat(expanded ? 'open' : 'close'), !isLeaf), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-checkbox-checked\"), checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-checkbox-indeterminate\"), halfChecked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-selected\"), selected), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-loading\"), loading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-leaf-last\"), isEndNode), _defineProperty(_classNames, 'drop-target', dropTargetKey === eventKey), _defineProperty(_classNames, 'drop-container', dropContainerKey === eventKey), _defineProperty(_classNames, 'drag-over', !disabled && dragOver), _defineProperty(_classNames, 'drag-over-gap-top', !disabled && dragOverGapTop), _defineProperty(_classNames, 'drag-over-gap-bottom', !disabled && dragOverGapBottom), _defineProperty(_classNames, 'filter-node', filterTreeNode && filterTreeNode(convertNodePropsToEventData(this.props))), _classNames)),\n style: style,\n onDragEnter: mergedDraggable ? this.onDragEnter : undefined,\n onDragOver: mergedDraggable ? this.onDragOver : undefined,\n onDragLeave: mergedDraggable ? this.onDragLeave : undefined,\n onDrop: mergedDraggable ? this.onDrop : undefined,\n onDragEnd: mergedDraggable ? this.onDragEnd : undefined,\n onMouseMove: onMouseMove\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(Indent, {\n prefixCls: prefixCls,\n level: level,\n isStart: isStart,\n isEnd: isEnd\n }), this.renderSwitcher(), this.renderCheckbox(), this.renderSelector());\n }\n }]);\n\n return InternalTreeNode;\n}(React.Component);\n\nvar ContextTreeNode = function ContextTreeNode(props) {\n return /*#__PURE__*/React.createElement(TreeContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(InternalTreeNode, _extends({}, props, {\n context: context\n }));\n });\n};\n\nContextTreeNode.displayName = 'TreeNode';\nContextTreeNode.defaultProps = {\n title: defaultTitle\n};\nContextTreeNode.isTreeNode = 1;\nexport { InternalTreeNode };\nexport default ContextTreeNode;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n/* eslint-disable no-lonely-if */\n\n/**\n * Legacy code. Should avoid to use if you are new to import these code.\n */\n\nimport React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport TreeNode from './TreeNode';\nexport function arrDel(list, value) {\n var clone = list.slice();\n var index = clone.indexOf(value);\n\n if (index >= 0) {\n clone.splice(index, 1);\n }\n\n return clone;\n}\nexport function arrAdd(list, value) {\n var clone = list.slice();\n\n if (clone.indexOf(value) === -1) {\n clone.push(value);\n }\n\n return clone;\n}\nexport function posToArr(pos) {\n return pos.split('-');\n}\nexport function getPosition(level, index) {\n return \"\".concat(level, \"-\").concat(index);\n}\nexport function isTreeNode(node) {\n return node && node.type && node.type.isTreeNode;\n}\nexport function getDragChildrenKeys(dragNodeKey, keyEntities) {\n // not contains self\n // self for left or right drag\n var dragChildrenKeys = [];\n var entity = keyEntities[dragNodeKey];\n\n function dig() {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n list.forEach(function (_ref) {\n var key = _ref.key,\n children = _ref.children;\n dragChildrenKeys.push(key);\n dig(children);\n });\n }\n\n dig(entity.children);\n return dragChildrenKeys;\n}\nexport function isLastChild(treeNodeEntity) {\n if (treeNodeEntity.parent) {\n var posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;\n }\n\n return false;\n}\nexport function isFirstChild(treeNodeEntity) {\n var posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === 0;\n} // Only used when drag, not affect SSR.\n\nexport function calcDropPosition(event, dragNode, targetNode, indent, startMousePosition, allowDrop, flattenedNodes, keyEntities, expandKeys, direction) {\n var _abstractDropNodeEnti;\n\n var clientX = event.clientX,\n clientY = event.clientY;\n\n var _event$target$getBoun = event.target.getBoundingClientRect(),\n top = _event$target$getBoun.top,\n height = _event$target$getBoun.height; // optional chain for testing\n\n\n var horizontalMouseOffset = (direction === 'rtl' ? -1 : 1) * (((startMousePosition === null || startMousePosition === void 0 ? void 0 : startMousePosition.x) || 0) - clientX);\n var rawDropLevelOffset = (horizontalMouseOffset - 12) / indent; // find abstract drop node by horizontal offset\n\n var abstractDropNodeEntity = keyEntities[targetNode.props.eventKey];\n\n if (clientY < top + height / 2) {\n // first half, set abstract drop node to previous node\n var nodeIndex = flattenedNodes.findIndex(function (flattenedNode) {\n return flattenedNode.data.key === abstractDropNodeEntity.key;\n });\n var prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;\n var prevNodeKey = flattenedNodes[prevNodeIndex].data.key;\n abstractDropNodeEntity = keyEntities[prevNodeKey];\n }\n\n var initialAbstractDropNodeKey = abstractDropNodeEntity.key;\n var abstractDragOverEntity = abstractDropNodeEntity;\n var dragOverNodeKey = abstractDropNodeEntity.key;\n var dropPosition = 0;\n var dropLevelOffset = 0; // Only allow cross level drop when dragging on a non-expanded node\n\n if (!expandKeys.includes(initialAbstractDropNodeKey)) {\n for (var i = 0; i < rawDropLevelOffset; i += 1) {\n if (isLastChild(abstractDropNodeEntity)) {\n abstractDropNodeEntity = abstractDropNodeEntity.parent;\n dropLevelOffset += 1;\n } else {\n break;\n }\n }\n }\n\n var abstractDropDataNode = abstractDropNodeEntity.node;\n var dropAllowed = true;\n\n if (isFirstChild(abstractDropNodeEntity) && abstractDropNodeEntity.level === 0 && clientY < top + height / 2 && allowDrop({\n dropNode: abstractDropDataNode,\n dropPosition: -1\n }) && abstractDropNodeEntity.key === targetNode.props.eventKey) {\n // first half of first node in first level\n dropPosition = -1;\n } else if ((abstractDragOverEntity.children || []).length && expandKeys.includes(dragOverNodeKey)) {\n // drop on expanded node\n // only allow drop inside\n if (allowDrop({\n dropNode: abstractDropDataNode,\n dropPosition: 0\n })) {\n dropPosition = 0;\n } else {\n dropAllowed = false;\n }\n } else if (dropLevelOffset === 0) {\n if (rawDropLevelOffset > -1.5) {\n // | Node | <- abstractDropNode\n // | -^-===== | <- mousePosition\n // 1. try drop after\n // 2. do not allow drop\n if (allowDrop({\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n } else {\n // | Node | <- abstractDropNode\n // | ---==^== | <- mousePosition\n // whether it has children or doesn't has children\n // always\n // 1. try drop inside\n // 2. try drop after\n // 3. do not allow drop\n if (allowDrop({\n dropNode: abstractDropDataNode,\n dropPosition: 0\n })) {\n dropPosition = 0;\n } else if (allowDrop({\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n } else {\n // | Node1 | <- abstractDropNode\n // | Node2 |\n // --^--|----=====| <- mousePosition\n // 1. try insert after Node1\n // 2. do not allow drop\n if (allowDrop({\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n\n return {\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: abstractDropNodeEntity.key,\n dropTargetPos: abstractDropNodeEntity.pos,\n dragOverNodeKey: dragOverNodeKey,\n dropContainerKey: dropPosition === 0 ? null : ((_abstractDropNodeEnti = abstractDropNodeEntity.parent) === null || _abstractDropNodeEnti === void 0 ? void 0 : _abstractDropNodeEnti.key) || null,\n dropAllowed: dropAllowed\n };\n}\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\n\nexport function calcSelectedKeys(selectedKeys, props) {\n if (!selectedKeys) return undefined;\n var multiple = props.multiple;\n\n if (multiple) {\n return selectedKeys.slice();\n }\n\n if (selectedKeys.length) {\n return [selectedKeys[0]];\n }\n\n return selectedKeys;\n}\n\nvar internalProcessProps = function internalProcessProps(props) {\n return props;\n};\n\nexport function convertDataToTree(treeData, processor) {\n if (!treeData) return [];\n\n var _ref2 = processor || {},\n _ref2$processProps = _ref2.processProps,\n processProps = _ref2$processProps === void 0 ? internalProcessProps : _ref2$processProps;\n\n var list = Array.isArray(treeData) ? treeData : [treeData];\n return list.map(function (_ref3) {\n var children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"children\"]);\n\n var childrenNodes = convertDataToTree(children, processor);\n return /*#__PURE__*/React.createElement(TreeNode, processProps(props), childrenNodes);\n });\n}\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\n\nexport function parseCheckedKeys(keys) {\n if (!keys) {\n return null;\n } // Convert keys to object format\n\n\n var keyProps;\n\n if (Array.isArray(keys)) {\n // [Legacy] Follow the api doc\n keyProps = {\n checkedKeys: keys,\n halfCheckedKeys: undefined\n };\n } else if (_typeof(keys) === 'object') {\n keyProps = {\n checkedKeys: keys.checked || undefined,\n halfCheckedKeys: keys.halfChecked || undefined\n };\n } else {\n warning(false, '`checkedKeys` is not an array or an object');\n return null;\n }\n\n return keyProps;\n}\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\n\nexport function conductExpandParent(keyList, keyEntities) {\n var expandedKeys = new Set();\n\n function conductUp(key) {\n if (expandedKeys.has(key)) return;\n var entity = keyEntities[key];\n if (!entity) return;\n expandedKeys.add(key);\n var parent = entity.parent,\n node = entity.node;\n if (node.disabled) return;\n\n if (parent) {\n conductUp(parent.key);\n }\n }\n\n (keyList || []).forEach(function (key) {\n conductUp(key);\n });\n return _toConsumableArray(expandedKeys);\n}\n/**\n * Returns only the data- and aria- key/value pairs\n */\n\nexport function getDataAndAria(props) {\n var omitProps = {};\n Object.keys(props).forEach(function (key) {\n if (key.startsWith('data-') || key.startsWith('aria-')) {\n omitProps[key] = props[key];\n }\n });\n return omitProps;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport { getPosition, isTreeNode } from '../util';\nexport function getKey(key, pos) {\n if (key !== null && key !== undefined) {\n return key;\n }\n\n return pos;\n}\n/**\n * Warning if TreeNode do not provides key\n */\n\nexport function warningWithoutKey() {\n var treeData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var keys = new Map();\n\n function dig(list) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (list || []).forEach(function (treeNode) {\n var key = treeNode.key,\n children = treeNode.children;\n warning(key !== null && key !== undefined, \"Tree node must have a certain key: [\".concat(path).concat(key, \"]\"));\n var recordKey = String(key);\n warning(!keys.has(recordKey) || key === null || key === undefined, \"Same 'key' exist in the Tree: \".concat(recordKey));\n keys.set(recordKey, true);\n dig(children, \"\".concat(path).concat(recordKey, \" > \"));\n });\n }\n\n dig(treeData);\n}\n/**\n * Convert `children` of Tree into `treeData` structure.\n */\n\nexport function convertTreeToData(rootNodes) {\n function dig(node) {\n var treeNodes = toArray(node);\n return treeNodes.map(function (treeNode) {\n // Filter invalidate node\n if (!isTreeNode(treeNode)) {\n warning(!treeNode, 'Tree/TreeNode can only accept TreeNode as children.');\n return null;\n }\n\n var key = treeNode.key;\n\n var _treeNode$props = treeNode.props,\n children = _treeNode$props.children,\n rest = _objectWithoutProperties(_treeNode$props, [\"children\"]);\n\n var dataNode = _objectSpread({\n key: key\n }, rest);\n\n var parsedChildren = dig(children);\n\n if (parsedChildren.length) {\n dataNode.children = parsedChildren;\n }\n\n return dataNode;\n }).filter(function (dataNode) {\n return dataNode;\n });\n }\n\n return dig(rootNodes);\n}\n/**\n * Flat nest tree data into flatten list. This is used for virtual list render.\n * @param treeNodeList Origin data node list\n * @param expandedKeys\n * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).\n */\n\nexport function flattenTreeData() {\n var treeNodeList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var expandedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);\n var flattenList = [];\n\n function dig(list) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return list.map(function (treeNode, index) {\n var pos = getPosition(parent ? parent.pos : '0', index);\n var mergedKey = getKey(treeNode.key, pos); // Add FlattenDataNode into list\n\n var flattenNode = _objectSpread(_objectSpread({}, treeNode), {}, {\n parent: parent,\n pos: pos,\n children: null,\n data: treeNode,\n isStart: [].concat(_toConsumableArray(parent ? parent.isStart : []), [index === 0]),\n isEnd: [].concat(_toConsumableArray(parent ? parent.isEnd : []), [index === list.length - 1])\n });\n\n flattenList.push(flattenNode); // Loop treeNode children\n\n if (expandedKeys === true || expandedKeySet.has(mergedKey)) {\n flattenNode.children = dig(treeNode.children || [], flattenNode);\n } else {\n flattenNode.children = [];\n }\n\n return flattenNode;\n });\n }\n\n dig(treeNodeList);\n return flattenList;\n}\n/**\n * Traverse all the data by `treeData`.\n * Please not use it out of the `rc-tree` since we may refactor this code.\n */\n\nexport function traverseDataNodes(dataNodes, callback, // To avoid too many params, let use config instead of origin param\nconfig) {\n // Init config\n var externalGetKey = null;\n var childrenPropName;\n\n var configType = _typeof(config);\n\n if (configType === 'function' || configType === 'string') {\n // Legacy getKey param\n externalGetKey = config;\n } else if (config && configType === 'object') {\n childrenPropName = config.childrenPropName;\n externalGetKey = config.externalGetKey;\n }\n\n childrenPropName = childrenPropName || 'children'; // Get keys\n\n var syntheticGetKey;\n\n if (externalGetKey) {\n if (typeof externalGetKey === 'string') {\n syntheticGetKey = function syntheticGetKey(node) {\n return node[externalGetKey];\n };\n } else if (typeof externalGetKey === 'function') {\n syntheticGetKey = function syntheticGetKey(node) {\n return externalGetKey(node);\n };\n }\n } else {\n syntheticGetKey = function syntheticGetKey(node, pos) {\n return getKey(node.key, pos);\n };\n } // Process\n\n\n function processNode(node, index, parent) {\n var children = node ? node[childrenPropName] : dataNodes;\n var pos = node ? getPosition(parent.pos, index) : '0'; // Process node if is not root\n\n if (node) {\n var key = syntheticGetKey(node, pos);\n var data = {\n node: node,\n index: index,\n pos: pos,\n key: key,\n parentPos: parent.node ? parent.pos : null,\n level: parent.level + 1\n };\n callback(data);\n } // Process children node\n\n\n if (children) {\n children.forEach(function (subNode, subIndex) {\n processNode(subNode, subIndex, {\n node: node,\n pos: pos,\n level: parent ? parent.level + 1 : -1\n });\n });\n }\n }\n\n processNode(null);\n}\n/**\n * Convert `treeData` into entity records.\n */\n\nexport function convertDataToEntities(dataNodes) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n initWrapper = _ref.initWrapper,\n processEntity = _ref.processEntity,\n onProcessFinished = _ref.onProcessFinished,\n externalGetKey = _ref.externalGetKey,\n childrenPropName = _ref.childrenPropName;\n\n var\n /** @deprecated Use `config.externalGetKey` instead */\n legacyExternalGetKey = arguments.length > 2 ? arguments[2] : undefined; // Init config\n\n var mergedExternalGetKey = externalGetKey || legacyExternalGetKey;\n var posEntities = {};\n var keyEntities = {};\n var wrapper = {\n posEntities: posEntities,\n keyEntities: keyEntities\n };\n\n if (initWrapper) {\n wrapper = initWrapper(wrapper) || wrapper;\n }\n\n traverseDataNodes(dataNodes, function (item) {\n var node = item.node,\n index = item.index,\n pos = item.pos,\n key = item.key,\n parentPos = item.parentPos,\n level = item.level;\n var entity = {\n node: node,\n index: index,\n key: key,\n pos: pos,\n level: level\n };\n var mergedKey = getKey(key, pos);\n posEntities[pos] = entity;\n keyEntities[mergedKey] = entity; // Fill children\n\n entity.parent = posEntities[parentPos];\n\n if (entity.parent) {\n entity.parent.children = entity.parent.children || [];\n entity.parent.children.push(entity);\n }\n\n if (processEntity) {\n processEntity(entity, wrapper);\n }\n }, {\n externalGetKey: mergedExternalGetKey,\n childrenPropName: childrenPropName\n });\n\n if (onProcessFinished) {\n onProcessFinished(wrapper);\n }\n\n return wrapper;\n}\n/**\n * Get TreeNode props with Tree props.\n */\n\nexport function getTreeNodeProps(key, _ref2) {\n var expandedKeys = _ref2.expandedKeys,\n selectedKeys = _ref2.selectedKeys,\n loadedKeys = _ref2.loadedKeys,\n loadingKeys = _ref2.loadingKeys,\n checkedKeys = _ref2.checkedKeys,\n halfCheckedKeys = _ref2.halfCheckedKeys,\n dragOverNodeKey = _ref2.dragOverNodeKey,\n dropPosition = _ref2.dropPosition,\n keyEntities = _ref2.keyEntities;\n var entity = keyEntities[key];\n var treeNodeProps = {\n eventKey: key,\n expanded: expandedKeys.indexOf(key) !== -1,\n selected: selectedKeys.indexOf(key) !== -1,\n loaded: loadedKeys.indexOf(key) !== -1,\n loading: loadingKeys.indexOf(key) !== -1,\n checked: checkedKeys.indexOf(key) !== -1,\n halfChecked: halfCheckedKeys.indexOf(key) !== -1,\n pos: String(entity ? entity.pos : ''),\n // [Legacy] Drag props\n // Since the interaction of drag is changed, the semantic of the props are\n // not accuracy, I think it should be finally removed\n dragOver: dragOverNodeKey === key && dropPosition === 0,\n dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,\n dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1\n };\n return treeNodeProps;\n}\nexport function convertNodePropsToEventData(props) {\n var data = props.data,\n expanded = props.expanded,\n selected = props.selected,\n checked = props.checked,\n loaded = props.loaded,\n loading = props.loading,\n halfChecked = props.halfChecked,\n dragOver = props.dragOver,\n dragOverGapTop = props.dragOverGapTop,\n dragOverGapBottom = props.dragOverGapBottom,\n pos = props.pos,\n active = props.active;\n\n var eventData = _objectSpread(_objectSpread({}, data), {}, {\n expanded: expanded,\n selected: selected,\n checked: checked,\n loaded: loaded,\n loading: loading,\n halfChecked: halfChecked,\n dragOver: dragOver,\n dragOverGapTop: dragOverGapTop,\n dragOverGapBottom: dragOverGapBottom,\n pos: pos,\n active: active\n });\n\n if (!('props' in eventData)) {\n Object.defineProperty(eventData, 'props', {\n get: function get() {\n warning(false, 'Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.');\n return props;\n }\n });\n }\n\n return eventData;\n}","import warning from \"rc-util/es/warning\";\n\nfunction removeFromCheckedKeys(halfCheckedKeys, checkedKeys) {\n var filteredKeys = new Set();\n halfCheckedKeys.forEach(function (key) {\n if (!checkedKeys.has(key)) {\n filteredKeys.add(key);\n }\n });\n return filteredKeys;\n}\n\nexport function isCheckDisabled(node) {\n var _ref = node || {},\n disabled = _ref.disabled,\n disableCheckbox = _ref.disableCheckbox,\n checkable = _ref.checkable;\n\n return !!(disabled || disableCheckbox) || checkable === false;\n} // Fill miss keys\n\nfunction fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled) {\n var checkedKeys = new Set(keys);\n var halfCheckedKeys = new Set(); // Add checked keys top to bottom\n\n for (var level = 0; level <= maxLevel; level += 1) {\n var entities = levelEntities.get(level) || new Set();\n entities.forEach(function (entity) {\n var key = entity.key,\n node = entity.node,\n _entity$children = entity.children,\n children = _entity$children === void 0 ? [] : _entity$children;\n\n if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children.filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (childEntity) {\n checkedKeys.add(childEntity.key);\n });\n }\n });\n } // Add checked keys from bottom to top\n\n\n var visitedKeys = new Set();\n\n for (var _level = maxLevel; _level >= 0; _level -= 1) {\n var _entities = levelEntities.get(_level) || new Set();\n\n _entities.forEach(function (entity) {\n var parent = entity.parent,\n node = entity.node; // Skip if no need to check\n\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n } // Skip if parent is disabled\n\n\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n\n var allChecked = true;\n var partialChecked = false;\n (parent.children || []).filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (_ref2) {\n var key = _ref2.key;\n var checked = checkedKeys.has(key);\n\n if (allChecked && !checked) {\n allChecked = false;\n }\n\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n\n if (allChecked) {\n checkedKeys.add(parent.key);\n }\n\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n\n visitedKeys.add(parent.key);\n });\n }\n\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))\n };\n} // Remove useless key\n\n\nfunction cleanConductCheck(keys, halfKeys, levelEntities, maxLevel, syntheticGetCheckDisabled) {\n var checkedKeys = new Set(keys);\n var halfCheckedKeys = new Set(halfKeys); // Remove checked keys from top to bottom\n\n for (var level = 0; level <= maxLevel; level += 1) {\n var entities = levelEntities.get(level) || new Set();\n entities.forEach(function (entity) {\n var key = entity.key,\n node = entity.node,\n _entity$children2 = entity.children,\n children = _entity$children2 === void 0 ? [] : _entity$children2;\n\n if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children.filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (childEntity) {\n checkedKeys.delete(childEntity.key);\n });\n }\n });\n } // Remove checked keys form bottom to top\n\n\n halfCheckedKeys = new Set();\n var visitedKeys = new Set();\n\n for (var _level2 = maxLevel; _level2 >= 0; _level2 -= 1) {\n var _entities2 = levelEntities.get(_level2) || new Set();\n\n _entities2.forEach(function (entity) {\n var parent = entity.parent,\n node = entity.node; // Skip if no need to check\n\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n } // Skip if parent is disabled\n\n\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n\n var allChecked = true;\n var partialChecked = false;\n (parent.children || []).filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (_ref3) {\n var key = _ref3.key;\n var checked = checkedKeys.has(key);\n\n if (allChecked && !checked) {\n allChecked = false;\n }\n\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n\n if (!allChecked) {\n checkedKeys.delete(parent.key);\n }\n\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n\n visitedKeys.add(parent.key);\n });\n }\n\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))\n };\n}\n/**\n * Conduct with keys.\n * @param keyList current key list\n * @param keyEntities key - dataEntity map\n * @param mode `fill` to fill missing key, `clean` to remove useless key\n */\n\n\nexport function conductCheck(keyList, checked, keyEntities, getCheckDisabled) {\n var warningMissKeys = [];\n var syntheticGetCheckDisabled;\n\n if (getCheckDisabled) {\n syntheticGetCheckDisabled = getCheckDisabled;\n } else {\n syntheticGetCheckDisabled = isCheckDisabled;\n } // We only handle exist keys\n\n\n var keys = new Set(keyList.filter(function (key) {\n var hasEntity = !!keyEntities[key];\n\n if (!hasEntity) {\n warningMissKeys.push(key);\n }\n\n return hasEntity;\n }));\n var levelEntities = new Map();\n var maxLevel = 0; // Convert entities by level for calculation\n\n Object.keys(keyEntities).forEach(function (key) {\n var entity = keyEntities[key];\n var level = entity.level;\n var levelSet = levelEntities.get(level);\n\n if (!levelSet) {\n levelSet = new Set();\n levelEntities.set(level, levelSet);\n }\n\n levelSet.add(entity);\n maxLevel = Math.max(maxLevel, level);\n });\n warning(!warningMissKeys.length, \"Tree missing follow keys: \".concat(warningMissKeys.slice(0, 100).map(function (key) {\n return \"'\".concat(key, \"'\");\n }).join(', ')));\n var result;\n\n if (checked === true) {\n result = fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled);\n } else {\n result = cleanConductCheck(keys, checked.halfCheckedKeys, levelEntities, maxLevel, syntheticGetCheckDisabled);\n }\n\n return result;\n}","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topCenter: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomCenter: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nimport Placements from './placements';\n\nfunction Dropdown(props, ref) {\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n otherProps = _objectWithoutProperties(props, [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\"]);\n\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n\n var getOverlayElement = function getOverlayElement() {\n var overlay = props.overlay;\n var overlayElement;\n\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n\n return overlayElement;\n };\n\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n var overlayProps = getOverlayElement().props;\n setTriggerVisible(false);\n\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n\n if (overlayProps.onClick) {\n overlayProps.onClick(e);\n }\n };\n\n var onVisibleChange = function onVisibleChange(visible) {\n var onVisibleChange = props.onVisibleChange;\n setTriggerVisible(visible);\n\n if (typeof onVisibleChange === 'function') {\n onVisibleChange(visible);\n }\n };\n\n var getMenuElement = function getMenuElement() {\n var overlayElement = getOverlayElement();\n var extraOverlayProps = {\n prefixCls: \"\".concat(prefixCls, \"-menu\"),\n onClick: onClick\n };\n\n if (typeof overlayElement.type === 'string') {\n delete extraOverlayProps.prefixCls;\n }\n\n return React.createElement(React.Fragment, null, arrow && React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), React.cloneElement(overlayElement, extraOverlayProps));\n };\n\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n var overlay = props.overlay;\n\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n\n return getMenuElement();\n };\n\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n\n return !alignPoint;\n };\n\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n\n if (openClassName !== undefined) {\n return openClassName;\n }\n\n return \"\".concat(prefixCls, \"-open\");\n };\n\n var renderChildren = function renderChildren() {\n var children = props.children;\n var childrenProps = children.props ? children.props : {};\n var childClassName = classNames(childrenProps.className, getOpenClassName());\n return triggerVisible && children ? React.cloneElement(children, {\n className: childClassName\n }) : children;\n };\n\n var triggerHideAction = hideAction;\n\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n\n return React.createElement(Trigger, Object.assign({}, otherProps, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n builtinPlacements: placements,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction || [],\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: onVisibleChange,\n getPopupContainer: getPopupContainer\n }), renderChildren());\n}\n\nexport default React.forwardRef(Dropdown);","import Dropdown from './Dropdown';\nexport default Dropdown;","// This icon file is generated automatically.\nvar EllipsisOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\"\n }\n }]\n },\n \"name\": \"ellipsis\",\n \"theme\": \"outlined\"\n};\nexport default EllipsisOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport EllipsisOutlinedSvg from \"@ant-design/icons-svg/es/asn/EllipsisOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar EllipsisOutlined = function EllipsisOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: EllipsisOutlinedSvg\n }));\n};\n\nEllipsisOutlined.displayName = 'EllipsisOutlined';\nexport default /*#__PURE__*/React.forwardRef(EllipsisOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport Button from '../button';\nimport { ConfigContext } from '../config-provider';\nimport Dropdown from './dropdown';\nvar ButtonGroup = Button.Group;\n\nvar DropdownButton = function DropdownButton(props) {\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var customizePrefixCls = props.prefixCls,\n type = props.type,\n disabled = props.disabled,\n onClick = props.onClick,\n htmlType = props.htmlType,\n children = props.children,\n className = props.className,\n overlay = props.overlay,\n trigger = props.trigger,\n align = props.align,\n visible = props.visible,\n onVisibleChange = props.onVisibleChange,\n placement = props.placement,\n getPopupContainer = props.getPopupContainer,\n href = props.href,\n _props$icon = props.icon,\n icon = _props$icon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _props$icon,\n title = props.title,\n buttonsRender = props.buttonsRender,\n mouseEnterDelay = props.mouseEnterDelay,\n mouseLeaveDelay = props.mouseLeaveDelay,\n restProps = __rest(props, [\"prefixCls\", \"type\", \"disabled\", \"onClick\", \"htmlType\", \"children\", \"className\", \"overlay\", \"trigger\", \"align\", \"visible\", \"onVisibleChange\", \"placement\", \"getPopupContainer\", \"href\", \"icon\", \"title\", \"buttonsRender\", \"mouseEnterDelay\", \"mouseLeaveDelay\"]);\n\n var prefixCls = getPrefixCls('dropdown-button', customizePrefixCls);\n var dropdownProps = {\n align: align,\n overlay: overlay,\n disabled: disabled,\n trigger: disabled ? [] : trigger,\n onVisibleChange: onVisibleChange,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay\n };\n\n if ('visible' in props) {\n dropdownProps.visible = visible;\n }\n\n if ('placement' in props) {\n dropdownProps.placement = placement;\n } else {\n dropdownProps.placement = direction === 'rtl' ? 'bottomLeft' : 'bottomRight';\n }\n\n var leftButton = /*#__PURE__*/React.createElement(Button, {\n type: type,\n disabled: disabled,\n onClick: onClick,\n htmlType: htmlType,\n href: href,\n title: title\n }, children);\n var rightButton = /*#__PURE__*/React.createElement(Button, {\n type: type,\n icon: icon\n });\n\n var _buttonsRender = buttonsRender([leftButton, rightButton]),\n _buttonsRender2 = _slicedToArray(_buttonsRender, 2),\n leftButtonToRender = _buttonsRender2[0],\n rightButtonToRender = _buttonsRender2[1];\n\n return /*#__PURE__*/React.createElement(ButtonGroup, _extends({}, restProps, {\n className: classNames(prefixCls, className)\n }), leftButtonToRender, /*#__PURE__*/React.createElement(Dropdown, dropdownProps, rightButtonToRender));\n};\n\nDropdownButton.__ANT_BUTTON = true;\nDropdownButton.defaultProps = {\n type: 'default',\n buttonsRender: function buttonsRender(buttons) {\n return buttons;\n }\n};\nexport default DropdownButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport RcDropdown from 'rc-dropdown';\nimport classNames from 'classnames';\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport DropdownButton from './dropdown-button';\nimport { ConfigContext } from '../config-provider';\nimport devWarning from '../_util/devWarning';\nimport { tuple } from '../_util/type';\nimport { cloneElement } from '../_util/reactNode';\nvar Placements = tuple('topLeft', 'topCenter', 'topRight', 'bottomLeft', 'bottomCenter', 'bottomRight');\n\nvar Dropdown = function Dropdown(props) {\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var getTransitionName = function getTransitionName() {\n var rootPrefixCls = getPrefixCls();\n var _props$placement = props.placement,\n placement = _props$placement === void 0 ? '' : _props$placement,\n transitionName = props.transitionName;\n\n if (transitionName !== undefined) {\n return transitionName;\n }\n\n if (placement.indexOf('top') >= 0) {\n return \"\".concat(rootPrefixCls, \"-slide-down\");\n }\n\n return \"\".concat(rootPrefixCls, \"-slide-up\");\n };\n\n var renderOverlay = function renderOverlay(prefixCls) {\n // rc-dropdown already can process the function of overlay, but we have check logic here.\n // So we need render the element to check and pass back to rc-dropdown.\n var overlay = props.overlay;\n var overlayNode;\n\n if (typeof overlay === 'function') {\n overlayNode = overlay();\n } else {\n overlayNode = overlay;\n }\n\n overlayNode = React.Children.only(typeof overlayNode === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, overlayNode) : overlayNode);\n var overlayProps = overlayNode.props; // Warning if use other mode\n\n devWarning(!overlayProps.mode || overlayProps.mode === 'vertical', 'Dropdown', \"mode=\\\"\".concat(overlayProps.mode, \"\\\" is not supported for Dropdown's Menu.\")); // menu cannot be selectable in dropdown defaultly\n // menu should be focusable in dropdown defaultly\n\n var _overlayProps$selecta = overlayProps.selectable,\n selectable = _overlayProps$selecta === void 0 ? false : _overlayProps$selecta,\n _overlayProps$focusab = overlayProps.focusable,\n focusable = _overlayProps$focusab === void 0 ? true : _overlayProps$focusab,\n expandIcon = overlayProps.expandIcon;\n var overlayNodeExpandIcon = typeof expandIcon !== 'undefined' && /*#__PURE__*/React.isValidElement(expandIcon) ? expandIcon : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-menu-submenu-arrow\")\n }, /*#__PURE__*/React.createElement(RightOutlined, {\n className: \"\".concat(prefixCls, \"-menu-submenu-arrow-icon\")\n }));\n var fixedModeOverlay = typeof overlayNode.type === 'string' ? overlayNode : cloneElement(overlayNode, {\n mode: 'vertical',\n selectable: selectable,\n focusable: focusable,\n expandIcon: overlayNodeExpandIcon\n });\n return fixedModeOverlay;\n };\n\n var getPlacement = function getPlacement() {\n var placement = props.placement;\n\n if (placement !== undefined) {\n return placement;\n }\n\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n };\n\n var arrow = props.arrow,\n customizePrefixCls = props.prefixCls,\n children = props.children,\n trigger = props.trigger,\n disabled = props.disabled,\n getPopupContainer = props.getPopupContainer,\n overlayClassName = props.overlayClassName;\n var prefixCls = getPrefixCls('dropdown', customizePrefixCls);\n var child = React.Children.only(children);\n var dropdownTrigger = cloneElement(child, {\n className: classNames(\"\".concat(prefixCls, \"-trigger\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), child.props.className),\n disabled: disabled\n });\n var overlayClassNameCustomized = classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'));\n var triggerActions = disabled ? [] : trigger;\n var alignPoint;\n\n if (triggerActions && triggerActions.indexOf('contextMenu') !== -1) {\n alignPoint = true;\n }\n\n return /*#__PURE__*/React.createElement(RcDropdown, _extends({\n arrow: arrow,\n alignPoint: alignPoint\n }, props, {\n overlayClassName: overlayClassNameCustomized,\n prefixCls: prefixCls,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n transitionName: getTransitionName(),\n trigger: triggerActions,\n overlay: function overlay() {\n return renderOverlay(prefixCls);\n },\n placement: getPlacement()\n }), dropdownTrigger);\n};\n\nDropdown.Button = DropdownButton;\nDropdown.defaultProps = {\n mouseEnterDelay: 0.15,\n mouseLeaveDelay: 0.1\n};\nexport default Dropdown;","import Dropdown from './dropdown';\nexport default Dropdown;","import _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport { useState, useCallback, useMemo } from 'react';\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport { arrAdd, arrDel } from \"rc-tree/es/util\";\nimport { INTERNAL_COL_DEFINE } from 'rc-table';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Checkbox from '../../checkbox';\nimport Dropdown from '../../dropdown';\nimport Menu from '../../menu';\nimport Radio from '../../radio';\nimport devWarning from '../../_util/devWarning'; // TODO: warning if use ajax!!!\n\nexport var SELECTION_ALL = 'SELECT_ALL';\nexport var SELECTION_INVERT = 'SELECT_INVERT';\nexport var SELECTION_NONE = 'SELECT_NONE';\n\nfunction getFixedType(column) {\n return column && column.fixed;\n}\n\nfunction flattenData(data, childrenColumnName) {\n var list = [];\n (data || []).forEach(function (record) {\n list.push(record);\n\n if (record && _typeof(record) === 'object' && childrenColumnName in record) {\n list = [].concat(_toConsumableArray(list), _toConsumableArray(flattenData(record[childrenColumnName], childrenColumnName)));\n }\n });\n return list;\n}\n\nexport default function useSelection(rowSelection, config) {\n var _ref = rowSelection || {},\n preserveSelectedRowKeys = _ref.preserveSelectedRowKeys,\n selectedRowKeys = _ref.selectedRowKeys,\n defaultSelectedRowKeys = _ref.defaultSelectedRowKeys,\n getCheckboxProps = _ref.getCheckboxProps,\n onSelectionChange = _ref.onChange,\n onSelect = _ref.onSelect,\n onSelectAll = _ref.onSelectAll,\n onSelectInvert = _ref.onSelectInvert,\n onSelectNone = _ref.onSelectNone,\n onSelectMultiple = _ref.onSelectMultiple,\n selectionColWidth = _ref.columnWidth,\n selectionType = _ref.type,\n selections = _ref.selections,\n fixed = _ref.fixed,\n customizeRenderCell = _ref.renderCell,\n hideSelectAll = _ref.hideSelectAll,\n _ref$checkStrictly = _ref.checkStrictly,\n checkStrictly = _ref$checkStrictly === void 0 ? true : _ref$checkStrictly;\n\n var prefixCls = config.prefixCls,\n data = config.data,\n pageData = config.pageData,\n getRecordByKey = config.getRecordByKey,\n getRowKey = config.getRowKey,\n expandType = config.expandType,\n childrenColumnName = config.childrenColumnName,\n tableLocale = config.locale,\n expandIconColumnIndex = config.expandIconColumnIndex,\n getPopupContainer = config.getPopupContainer; // ======================== Caches ========================\n\n var preserveRecordsRef = React.useRef(new Map()); // ========================= Keys =========================\n\n var _useMergedState = useMergedState(selectedRowKeys || defaultSelectedRowKeys || [], {\n value: selectedRowKeys\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSelectedKeys = _useMergedState2[0],\n setMergedSelectedKeys = _useMergedState2[1];\n\n var _useMemo = useMemo(function () {\n return checkStrictly ? {\n keyEntities: null\n } : convertDataToEntities(data, {\n externalGetKey: getRowKey,\n childrenPropName: childrenColumnName\n });\n }, [data, getRowKey, checkStrictly, childrenColumnName]),\n keyEntities = _useMemo.keyEntities; // Get flatten data\n\n\n var flattedData = useMemo(function () {\n return flattenData(pageData, childrenColumnName);\n }, [pageData, childrenColumnName]); // Get all checkbox props\n\n var checkboxPropsMap = useMemo(function () {\n var map = new Map();\n flattedData.forEach(function (record, index) {\n var key = getRowKey(record, index);\n var checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};\n map.set(key, checkboxProps);\n\n if (process.env.NODE_ENV !== 'production' && ('checked' in checkboxProps || 'defaultChecked' in checkboxProps)) {\n devWarning(false, 'Table', 'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.');\n }\n });\n return map;\n }, [flattedData, getRowKey, getCheckboxProps]);\n var isCheckboxDisabled = useCallback(function (r) {\n var _a;\n\n return !!((_a = checkboxPropsMap.get(getRowKey(r))) === null || _a === void 0 ? void 0 : _a.disabled);\n }, [checkboxPropsMap, getRowKey]);\n\n var _useMemo2 = useMemo(function () {\n if (checkStrictly) {\n return [mergedSelectedKeys || [], []];\n }\n\n var _conductCheck = conductCheck(mergedSelectedKeys, true, keyEntities, isCheckboxDisabled),\n checkedKeys = _conductCheck.checkedKeys,\n halfCheckedKeys = _conductCheck.halfCheckedKeys;\n\n return [checkedKeys || [], halfCheckedKeys];\n }, [mergedSelectedKeys, checkStrictly, keyEntities, isCheckboxDisabled]),\n _useMemo3 = _slicedToArray(_useMemo2, 2),\n derivedSelectedKeys = _useMemo3[0],\n derivedHalfSelectedKeys = _useMemo3[1];\n\n var derivedSelectedKeySet = useMemo(function () {\n var keys = selectionType === 'radio' ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys;\n return new Set(keys);\n }, [derivedSelectedKeys, selectionType]);\n var derivedHalfSelectedKeySet = useMemo(function () {\n return selectionType === 'radio' ? new Set() : new Set(derivedHalfSelectedKeys);\n }, [derivedHalfSelectedKeys, selectionType]); // Save last selected key to enable range selection\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n lastSelectedKey = _useState2[0],\n setLastSelectedKey = _useState2[1]; // Reset if rowSelection reset\n\n\n React.useEffect(function () {\n if (!rowSelection) {\n setMergedSelectedKeys([]);\n }\n }, [!!rowSelection]);\n var setSelectedKeys = useCallback(function (keys) {\n var availableKeys;\n var records;\n\n if (preserveSelectedRowKeys) {\n // Keep key if mark as preserveSelectedRowKeys\n var newCache = new Map();\n availableKeys = keys;\n records = keys.map(function (key) {\n var record = getRecordByKey(key);\n\n if (!record && preserveRecordsRef.current.has(key)) {\n record = preserveRecordsRef.current.get(key);\n }\n\n newCache.set(key, record);\n return record;\n }); // Refresh to new cache\n\n preserveRecordsRef.current = newCache;\n } else {\n // Filter key which not exist in the `dataSource`\n availableKeys = [];\n records = [];\n keys.forEach(function (key) {\n var record = getRecordByKey(key);\n\n if (record !== undefined) {\n availableKeys.push(key);\n records.push(record);\n }\n });\n }\n\n setMergedSelectedKeys(availableKeys);\n onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records);\n }, [setMergedSelectedKeys, getRecordByKey, onSelectionChange, preserveSelectedRowKeys]); // ====================== Selections ======================\n // Trigger single `onSelect` event\n\n var triggerSingleSelection = useCallback(function (key, selected, keys, event) {\n if (onSelect) {\n var rows = keys.map(function (k) {\n return getRecordByKey(k);\n });\n onSelect(getRecordByKey(key), selected, rows, event);\n }\n\n setSelectedKeys(keys);\n }, [onSelect, getRecordByKey, setSelectedKeys]);\n var mergedSelections = useMemo(function () {\n if (!selections || hideSelectAll) {\n return null;\n }\n\n var selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n return selectionList.map(function (selection) {\n if (selection === SELECTION_ALL) {\n return {\n key: 'all',\n text: tableLocale.selectionAll,\n onSelect: function onSelect() {\n setSelectedKeys(data.map(function (record, index) {\n return getRowKey(record, index);\n }));\n }\n };\n }\n\n if (selection === SELECTION_INVERT) {\n return {\n key: 'invert',\n text: tableLocale.selectInvert,\n onSelect: function onSelect() {\n var keySet = new Set(derivedSelectedKeySet);\n pageData.forEach(function (record, index) {\n var key = getRowKey(record, index);\n\n if (keySet.has(key)) {\n keySet[\"delete\"](key);\n } else {\n keySet.add(key);\n }\n });\n var keys = Array.from(keySet);\n\n if (onSelectInvert) {\n devWarning(false, 'Table', '`onSelectInvert` will be removed in future. Please use `onChange` instead.');\n onSelectInvert(keys);\n }\n\n setSelectedKeys(keys);\n }\n };\n }\n\n if (selection === SELECTION_NONE) {\n return {\n key: 'none',\n text: tableLocale.selectNone,\n onSelect: function onSelect() {\n onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone();\n setSelectedKeys([]);\n }\n };\n }\n\n return selection;\n });\n }, [selections, derivedSelectedKeySet, pageData, getRowKey, onSelectInvert, setSelectedKeys]); // ======================= Columns ========================\n\n var transformColumns = useCallback(function (columns) {\n if (!rowSelection) {\n return columns;\n } // Support selection\n\n\n var keySet = new Set(derivedSelectedKeySet); // Record key only need check with enabled\n\n var recordKeys = flattedData.map(getRowKey).filter(function (key) {\n return !checkboxPropsMap.get(key).disabled;\n });\n var checkedCurrentAll = recordKeys.every(function (key) {\n return keySet.has(key);\n });\n var checkedCurrentSome = recordKeys.some(function (key) {\n return keySet.has(key);\n });\n\n var onSelectAllChange = function onSelectAllChange() {\n var changeKeys = [];\n\n if (checkedCurrentAll) {\n recordKeys.forEach(function (key) {\n keySet[\"delete\"](key);\n changeKeys.push(key);\n });\n } else {\n recordKeys.forEach(function (key) {\n if (!keySet.has(key)) {\n keySet.add(key);\n changeKeys.push(key);\n }\n });\n }\n\n var keys = Array.from(keySet);\n onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys.map(function (k) {\n return getRecordByKey(k);\n }), changeKeys.map(function (k) {\n return getRecordByKey(k);\n }));\n setSelectedKeys(keys);\n }; // ===================== Render =====================\n // Title Cell\n\n\n var title;\n\n if (selectionType !== 'radio') {\n var customizeSelections;\n\n if (mergedSelections) {\n var menu = /*#__PURE__*/React.createElement(Menu, {\n getPopupContainer: getPopupContainer\n }, mergedSelections.map(function (selection, index) {\n var key = selection.key,\n text = selection.text,\n onSelectionClick = selection.onSelect;\n return /*#__PURE__*/React.createElement(Menu.Item, {\n key: key || index,\n onClick: function onClick() {\n onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys);\n }\n }, text);\n }));\n customizeSelections = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-selection-extra\")\n }, /*#__PURE__*/React.createElement(Dropdown, {\n overlay: menu,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(DownOutlined, null))));\n }\n\n var allDisabled = flattedData.every(function (record, index) {\n var key = getRowKey(record, index);\n var checkboxProps = checkboxPropsMap.get(key) || {};\n return checkboxProps.disabled;\n });\n title = !hideSelectAll && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-selection\")\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: !allDisabled && !!flattedData.length && checkedCurrentAll,\n indeterminate: !checkedCurrentAll && checkedCurrentSome,\n onChange: onSelectAllChange,\n disabled: flattedData.length === 0 || allDisabled,\n skipGroup: true\n }), customizeSelections);\n } // Body Cell\n\n\n var renderCell;\n\n if (selectionType === 'radio') {\n renderCell = function renderCell(_, record, index) {\n var key = getRowKey(record, index);\n var checked = keySet.has(key);\n return {\n node: /*#__PURE__*/React.createElement(Radio, _extends({}, checkboxPropsMap.get(key), {\n checked: checked,\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n onChange: function onChange(event) {\n if (!keySet.has(key)) {\n triggerSingleSelection(key, true, [key], event.nativeEvent);\n }\n }\n })),\n checked: checked\n };\n };\n } else {\n renderCell = function renderCell(_, record, index) {\n var _a;\n\n var key = getRowKey(record, index);\n var checked = keySet.has(key);\n var indeterminate = derivedHalfSelectedKeySet.has(key);\n var checkboxProps = checkboxPropsMap.get(key);\n var mergedIndeterminate;\n\n if (expandType === 'nest') {\n mergedIndeterminate = indeterminate;\n devWarning(typeof (checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== 'boolean', 'Table', 'set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.');\n } else {\n mergedIndeterminate = (_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== null && _a !== void 0 ? _a : indeterminate;\n } // Record checked\n\n\n return {\n node: /*#__PURE__*/React.createElement(Checkbox, _extends({}, checkboxProps, {\n indeterminate: mergedIndeterminate,\n checked: checked,\n skipGroup: true,\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n onChange: function onChange(_ref2) {\n var nativeEvent = _ref2.nativeEvent;\n var shiftKey = nativeEvent.shiftKey;\n var startIndex = -1;\n var endIndex = -1; // Get range of this\n\n if (shiftKey && checkStrictly) {\n var pointKeys = new Set([lastSelectedKey, key]);\n recordKeys.some(function (recordKey, recordIndex) {\n if (pointKeys.has(recordKey)) {\n if (startIndex === -1) {\n startIndex = recordIndex;\n } else {\n endIndex = recordIndex;\n return true;\n }\n }\n\n return false;\n });\n }\n\n if (endIndex !== -1 && startIndex !== endIndex && checkStrictly) {\n // Batch update selections\n var rangeKeys = recordKeys.slice(startIndex, endIndex + 1);\n var changedKeys = [];\n\n if (checked) {\n rangeKeys.forEach(function (recordKey) {\n if (keySet.has(recordKey)) {\n changedKeys.push(recordKey);\n keySet[\"delete\"](recordKey);\n }\n });\n } else {\n rangeKeys.forEach(function (recordKey) {\n if (!keySet.has(recordKey)) {\n changedKeys.push(recordKey);\n keySet.add(recordKey);\n }\n });\n }\n\n var keys = Array.from(keySet);\n onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys.map(function (recordKey) {\n return getRecordByKey(recordKey);\n }), changedKeys.map(function (recordKey) {\n return getRecordByKey(recordKey);\n }));\n setSelectedKeys(keys);\n } else {\n // Single record selected\n var originCheckedKeys = derivedSelectedKeys;\n\n if (checkStrictly) {\n var checkedKeys = checked ? arrDel(originCheckedKeys, key) : arrAdd(originCheckedKeys, key);\n triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);\n } else {\n // Always fill first\n var result = conductCheck([].concat(_toConsumableArray(originCheckedKeys), [key]), true, keyEntities, isCheckboxDisabled);\n var _checkedKeys = result.checkedKeys,\n halfCheckedKeys = result.halfCheckedKeys;\n var nextCheckedKeys = _checkedKeys; // If remove, we do it again to correction\n\n if (checked) {\n var tempKeySet = new Set(_checkedKeys);\n tempKeySet[\"delete\"](key);\n nextCheckedKeys = conductCheck(Array.from(tempKeySet), {\n checked: false,\n halfCheckedKeys: halfCheckedKeys\n }, keyEntities, isCheckboxDisabled).checkedKeys;\n }\n\n triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);\n }\n }\n\n setLastSelectedKey(key);\n }\n })),\n checked: checked\n };\n };\n }\n\n var renderSelectionCell = function renderSelectionCell(_, record, index) {\n var _renderCell = renderCell(_, record, index),\n node = _renderCell.node,\n checked = _renderCell.checked;\n\n if (customizeRenderCell) {\n return customizeRenderCell(checked, record, index, node);\n }\n\n return node;\n }; // Columns\n\n\n var selectionColumn = _defineProperty({\n width: selectionColWidth,\n className: \"\".concat(prefixCls, \"-selection-column\"),\n title: rowSelection.columnTitle || title,\n render: renderSelectionCell\n }, INTERNAL_COL_DEFINE, {\n className: \"\".concat(prefixCls, \"-selection-col\")\n });\n\n if (expandType === 'row' && columns.length && !expandIconColumnIndex) {\n var _columns = _toArray(columns),\n expandColumn = _columns[0],\n restColumns = _columns.slice(1);\n\n var selectionFixed = fixed || getFixedType(restColumns[0]);\n\n if (selectionFixed) {\n expandColumn.fixed = selectionFixed;\n }\n\n return [expandColumn, _extends(_extends({}, selectionColumn), {\n fixed: selectionFixed\n })].concat(_toConsumableArray(restColumns));\n }\n\n return [_extends(_extends({}, selectionColumn), {\n fixed: fixed || getFixedType(columns[0])\n })].concat(_toConsumableArray(columns));\n }, [getRowKey, flattedData, rowSelection, derivedSelectedKeys, derivedSelectedKeySet, derivedHalfSelectedKeySet, selectionColWidth, mergedSelections, expandType, lastSelectedKey, checkboxPropsMap, onSelectMultiple, triggerSingleSelection, isCheckboxDisabled]);\n return [transformColumns, derivedSelectedKeySet];\n}","// This icon file is generated automatically.\nvar CaretDownOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"0 0 1024 1024\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\"\n }\n }]\n },\n \"name\": \"caret-down\",\n \"theme\": \"outlined\"\n};\nexport default CaretDownOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretDownOutlined = function CaretDownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: CaretDownOutlinedSvg\n }));\n};\n\nCaretDownOutlined.displayName = 'CaretDownOutlined';\nexport default /*#__PURE__*/React.forwardRef(CaretDownOutlined);","// This icon file is generated automatically.\nvar CaretUpOutlined = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"0 0 1024 1024\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\"\n }\n }]\n },\n \"name\": \"caret-up\",\n \"theme\": \"outlined\"\n};\nexport default CaretUpOutlined;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CaretUpOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretUpOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretUpOutlined = function CaretUpOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: CaretUpOutlinedSvg\n }));\n};\n\nCaretUpOutlined.displayName = 'CaretUpOutlined';\nexport default /*#__PURE__*/React.forwardRef(CaretUpOutlined);","export function getColumnKey(column, defaultKey) {\n if ('key' in column && column.key !== undefined && column.key !== null) {\n return column.key;\n }\n\n if (column.dataIndex) {\n return Array.isArray(column.dataIndex) ? column.dataIndex.join('.') : column.dataIndex;\n }\n\n return defaultKey;\n}\nexport function getColumnPos(index, pos) {\n return pos ? \"\".concat(pos, \"-\").concat(index) : \"\".concat(index);\n}\nexport function renderColumnTitle(title, props) {\n if (typeof title === 'function') {\n return title(props);\n }\n\n return title;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CaretDownOutlined from \"@ant-design/icons/es/icons/CaretDownOutlined\";\nimport CaretUpOutlined from \"@ant-design/icons/es/icons/CaretUpOutlined\";\nimport Tooltip from '../../tooltip';\nimport { getColumnKey, getColumnPos, renderColumnTitle } from '../util';\nvar ASCEND = 'ascend';\nvar DESCEND = 'descend';\n\nfunction getMultiplePriority(column) {\n if (_typeof(column.sorter) === 'object' && typeof column.sorter.multiple === 'number') {\n return column.sorter.multiple;\n }\n\n return false;\n}\n\nfunction getSortFunction(sorter) {\n if (typeof sorter === 'function') {\n return sorter;\n }\n\n if (sorter && _typeof(sorter) === 'object' && sorter.compare) {\n return sorter.compare;\n }\n\n return false;\n}\n\nfunction nextSortDirection(sortDirections, current) {\n if (!current) {\n return sortDirections[0];\n }\n\n return sortDirections[sortDirections.indexOf(current) + 1];\n}\n\nfunction collectSortStates(columns, init, pos) {\n var sortStates = [];\n\n function pushState(column, columnPos) {\n sortStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n multiplePriority: getMultiplePriority(column),\n sortOrder: column.sortOrder\n });\n }\n\n (columns || []).forEach(function (column, index) {\n var columnPos = getColumnPos(index, pos);\n\n if (column.children) {\n if ('sortOrder' in column) {\n // Controlled\n pushState(column, columnPos);\n }\n\n sortStates = [].concat(_toConsumableArray(sortStates), _toConsumableArray(collectSortStates(column.children, init, columnPos)));\n } else if (column.sorter) {\n if ('sortOrder' in column) {\n // Controlled\n pushState(column, columnPos);\n } else if (init && column.defaultSortOrder) {\n // Default sorter\n sortStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n multiplePriority: getMultiplePriority(column),\n sortOrder: column.defaultSortOrder\n });\n }\n }\n });\n return sortStates;\n}\n\nfunction injectSorter(prefixCls, columns, sorterSates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, pos) {\n return (columns || []).map(function (column, index) {\n var columnPos = getColumnPos(index, pos);\n var newColumn = column;\n\n if (newColumn.sorter) {\n var sortDirections = newColumn.sortDirections || defaultSortDirections;\n var showSorterTooltip = newColumn.showSorterTooltip === undefined ? tableShowSorterTooltip : newColumn.showSorterTooltip;\n var columnKey = getColumnKey(newColumn, columnPos);\n var sorterState = sorterSates.find(function (_ref) {\n var key = _ref.key;\n return key === columnKey;\n });\n var sorterOrder = sorterState ? sorterState.sortOrder : null;\n var nextSortOrder = nextSortDirection(sortDirections, sorterOrder);\n var upNode = sortDirections.includes(ASCEND) && /*#__PURE__*/React.createElement(CaretUpOutlined, {\n className: classNames(\"\".concat(prefixCls, \"-column-sorter-up\"), {\n active: sorterOrder === ASCEND\n })\n });\n var downNode = sortDirections.includes(DESCEND) && /*#__PURE__*/React.createElement(CaretDownOutlined, {\n className: classNames(\"\".concat(prefixCls, \"-column-sorter-down\"), {\n active: sorterOrder === DESCEND\n })\n });\n\n var _ref2 = tableLocale || {},\n cancelSort = _ref2.cancelSort,\n triggerAsc = _ref2.triggerAsc,\n triggerDesc = _ref2.triggerDesc;\n\n var sortTip = cancelSort;\n\n if (nextSortOrder === DESCEND) {\n sortTip = triggerDesc;\n } else if (nextSortOrder === ASCEND) {\n sortTip = triggerAsc;\n }\n\n var tooltipProps = _typeof(showSorterTooltip) === 'object' ? showSorterTooltip : {\n title: sortTip\n };\n newColumn = _extends(_extends({}, newColumn), {\n className: classNames(newColumn.className, _defineProperty({}, \"\".concat(prefixCls, \"-column-sort\"), sorterOrder)),\n title: function title(renderProps) {\n var renderSortTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-column-sorters\")\n }, /*#__PURE__*/React.createElement(\"span\", null, renderColumnTitle(column.title, renderProps)), /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-column-sorter\"), _defineProperty({}, \"\".concat(prefixCls, \"-column-sorter-full\"), !!(upNode && downNode)))\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-column-sorter-inner\")\n }, upNode, downNode)));\n return showSorterTooltip ? /*#__PURE__*/React.createElement(Tooltip, tooltipProps, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-column-sorters-with-tooltip\")\n }, renderSortTitle)) : renderSortTitle;\n },\n onHeaderCell: function onHeaderCell(col) {\n var cell = column.onHeaderCell && column.onHeaderCell(col) || {};\n var originOnClick = cell.onClick;\n\n cell.onClick = function (event) {\n triggerSorter({\n column: column,\n key: columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column)\n });\n\n if (originOnClick) {\n originOnClick(event);\n }\n };\n\n cell.className = classNames(cell.className, \"\".concat(prefixCls, \"-column-has-sorters\"));\n return cell;\n }\n });\n }\n\n if ('children' in newColumn) {\n newColumn = _extends(_extends({}, newColumn), {\n children: injectSorter(prefixCls, newColumn.children, sorterSates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, columnPos)\n });\n }\n\n return newColumn;\n });\n}\n\nfunction stateToInfo(sorterStates) {\n var column = sorterStates.column,\n sortOrder = sorterStates.sortOrder;\n return {\n column: column,\n order: sortOrder,\n field: column.dataIndex,\n columnKey: column.key\n };\n}\n\nfunction generateSorterInfo(sorterStates) {\n var list = sorterStates.filter(function (_ref3) {\n var sortOrder = _ref3.sortOrder;\n return sortOrder;\n }).map(stateToInfo); // =========== Legacy compatible support ===========\n // https://github.com/ant-design/ant-design/pull/19226\n\n if (list.length === 0 && sorterStates.length) {\n return _extends(_extends({}, stateToInfo(sorterStates[sorterStates.length - 1])), {\n column: undefined\n });\n }\n\n if (list.length <= 1) {\n return list[0] || {};\n }\n\n return list;\n}\n\nexport function getSortData(data, sortStates, childrenColumnName) {\n var innerSorterStates = sortStates.slice().sort(function (a, b) {\n return b.multiplePriority - a.multiplePriority;\n });\n var cloneData = data.slice();\n var runningSorters = innerSorterStates.filter(function (_ref4) {\n var sorter = _ref4.column.sorter,\n sortOrder = _ref4.sortOrder;\n return getSortFunction(sorter) && sortOrder;\n }); // Skip if no sorter needed\n\n if (!runningSorters.length) {\n return cloneData;\n }\n\n return cloneData.sort(function (record1, record2) {\n for (var i = 0; i < runningSorters.length; i += 1) {\n var sorterState = runningSorters[i];\n var sorter = sorterState.column.sorter,\n sortOrder = sorterState.sortOrder;\n var compareFn = getSortFunction(sorter);\n\n if (compareFn && sortOrder) {\n var compareResult = compareFn(record1, record2, sortOrder);\n\n if (compareResult !== 0) {\n return sortOrder === ASCEND ? compareResult : -compareResult;\n }\n }\n }\n\n return 0;\n }).map(function (record) {\n var subRecords = record[childrenColumnName];\n\n if (subRecords) {\n return _extends(_extends({}, record), _defineProperty({}, childrenColumnName, getSortData(subRecords, sortStates, childrenColumnName)));\n }\n\n return record;\n });\n}\nexport default function useFilterSorter(_ref5) {\n var prefixCls = _ref5.prefixCls,\n mergedColumns = _ref5.mergedColumns,\n onSorterChange = _ref5.onSorterChange,\n sortDirections = _ref5.sortDirections,\n tableLocale = _ref5.tableLocale,\n showSorterTooltip = _ref5.showSorterTooltip;\n\n var _React$useState = React.useState(collectSortStates(mergedColumns, true)),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n sortStates = _React$useState2[0],\n setSortStates = _React$useState2[1];\n\n var mergedSorterStates = React.useMemo(function () {\n var validate = true;\n var collectedStates = collectSortStates(mergedColumns, false); // Return if not controlled\n\n if (!collectedStates.length) {\n return sortStates;\n }\n\n var validateStates = [];\n\n function patchStates(state) {\n if (validate) {\n validateStates.push(state);\n } else {\n validateStates.push(_extends(_extends({}, state), {\n sortOrder: null\n }));\n }\n }\n\n var multipleMode = null;\n collectedStates.forEach(function (state) {\n if (multipleMode === null) {\n patchStates(state);\n\n if (state.sortOrder) {\n if (state.multiplePriority === false) {\n validate = false;\n } else {\n multipleMode = true;\n }\n }\n } else if (multipleMode && state.multiplePriority !== false) {\n patchStates(state);\n } else {\n validate = false;\n patchStates(state);\n }\n });\n return validateStates;\n }, [mergedColumns, sortStates]); // Get render columns title required props\n\n var columnTitleSorterProps = React.useMemo(function () {\n var sortColumns = mergedSorterStates.map(function (_ref6) {\n var column = _ref6.column,\n sortOrder = _ref6.sortOrder;\n return {\n column: column,\n order: sortOrder\n };\n });\n return {\n sortColumns: sortColumns,\n // Legacy\n sortColumn: sortColumns[0] && sortColumns[0].column,\n sortOrder: sortColumns[0] && sortColumns[0].order\n };\n }, [mergedSorterStates]);\n\n function triggerSorter(sortState) {\n var newSorterStates;\n\n if (sortState.multiplePriority === false || !mergedSorterStates.length || mergedSorterStates[0].multiplePriority === false) {\n newSorterStates = [sortState];\n } else {\n newSorterStates = [].concat(_toConsumableArray(mergedSorterStates.filter(function (_ref7) {\n var key = _ref7.key;\n return key !== sortState.key;\n })), [sortState]);\n }\n\n setSortStates(newSorterStates);\n onSorterChange(generateSorterInfo(newSorterStates), newSorterStates);\n }\n\n var transformColumns = function transformColumns(innerColumns) {\n return injectSorter(prefixCls, innerColumns, mergedSorterStates, triggerSorter, sortDirections, tableLocale, showSorterTooltip);\n };\n\n var getSorters = function getSorters() {\n return generateSorterInfo(mergedSorterStates);\n };\n\n return [transformColumns, mergedSorterStates, columnTitleSorterProps, getSorters];\n}","// This icon file is generated automatically.\nvar FilterFilled = {\n \"icon\": {\n \"tag\": \"svg\",\n \"attrs\": {\n \"viewBox\": \"64 64 896 896\",\n \"focusable\": \"false\"\n },\n \"children\": [{\n \"tag\": \"path\",\n \"attrs\": {\n \"d\": \"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\"\n }\n }]\n },\n \"name\": \"filter\",\n \"theme\": \"filled\"\n};\nexport default FilterFilled;","// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport FilterFilledSvg from \"@ant-design/icons-svg/es/asn/FilterFilled\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar FilterFilled = function FilterFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, Object.assign({}, props, {\n ref: ref,\n icon: FilterFilledSvg\n }));\n};\n\nFilterFilled.displayName = 'FilterFilled';\nexport default /*#__PURE__*/React.forwardRef(FilterFilled);","import * as React from 'react';\n\nvar FilterDropdownMenuWrapper = function FilterDropdownMenuWrapper(props) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: props.className,\n onClick: function onClick(e) {\n return e.stopPropagation();\n }\n }, props.children);\n};\n\nexport default FilterDropdownMenuWrapper;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport isEqual from 'lodash/isEqual';\nimport FilterFilled from \"@ant-design/icons/es/icons/FilterFilled\";\nimport Button from '../../../button';\nimport Menu from '../../../menu';\nimport Checkbox from '../../../checkbox';\nimport Radio from '../../../radio';\nimport Dropdown from '../../../dropdown';\nimport Empty from '../../../empty';\nimport FilterDropdownMenuWrapper from './FilterWrapper';\nimport useSyncState from '../../../_util/hooks/useSyncState';\nimport { ConfigContext } from '../../../config-provider/context';\nvar SubMenu = Menu.SubMenu,\n MenuItem = Menu.Item;\n\nfunction hasSubMenu(filters) {\n return filters.some(function (_ref) {\n var children = _ref.children;\n return children;\n });\n}\n\nfunction renderFilterItems(_ref2) {\n var filters = _ref2.filters,\n prefixCls = _ref2.prefixCls,\n filteredKeys = _ref2.filteredKeys,\n filterMultiple = _ref2.filterMultiple,\n locale = _ref2.locale;\n\n if (filters.length === 0) {\n // wrapped with
    to avoid react warning\n // https://github.com/ant-design/ant-design/issues/25979\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n margin: '16px 0'\n }\n }, /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n description: locale.filterEmptyText,\n imageStyle: {\n height: 24\n }\n }));\n }\n\n return filters.map(function (filter, index) {\n var key = String(filter.value);\n\n if (filter.children) {\n return /*#__PURE__*/React.createElement(SubMenu, {\n key: key || index,\n title: filter.text,\n popupClassName: \"\".concat(prefixCls, \"-dropdown-submenu\")\n }, renderFilterItems({\n filters: filter.children,\n prefixCls: prefixCls,\n filteredKeys: filteredKeys,\n filterMultiple: filterMultiple,\n locale: locale\n }));\n }\n\n var Component = filterMultiple ? Checkbox : Radio;\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: filter.value !== undefined ? key : index\n }, /*#__PURE__*/React.createElement(Component, {\n checked: filteredKeys.includes(key)\n }), /*#__PURE__*/React.createElement(\"span\", null, filter.text));\n });\n}\n\nfunction FilterDropdown(props) {\n var _a;\n\n var prefixCls = props.prefixCls,\n column = props.column,\n dropdownPrefixCls = props.dropdownPrefixCls,\n columnKey = props.columnKey,\n filterMultiple = props.filterMultiple,\n filterState = props.filterState,\n triggerFilter = props.triggerFilter,\n locale = props.locale,\n children = props.children,\n getPopupContainer = props.getPopupContainer;\n var filterDropdownVisible = column.filterDropdownVisible,\n onFilterDropdownVisibleChange = column.onFilterDropdownVisibleChange;\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visible = _React$useState2[0],\n setVisible = _React$useState2[1];\n\n var filtered = !!(filterState && (((_a = filterState.filteredKeys) === null || _a === void 0 ? void 0 : _a.length) || filterState.forceFiltered));\n\n var triggerVisible = function triggerVisible(newVisible) {\n setVisible(newVisible);\n onFilterDropdownVisibleChange === null || onFilterDropdownVisibleChange === void 0 ? void 0 : onFilterDropdownVisibleChange(newVisible);\n };\n\n var mergedVisible = typeof filterDropdownVisible === 'boolean' ? filterDropdownVisible : visible; // ===================== Select Keys =====================\n\n var propFilteredKeys = filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys;\n\n var _useSyncState = useSyncState(propFilteredKeys || []),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n getFilteredKeysSync = _useSyncState2[0],\n setFilteredKeysSync = _useSyncState2[1];\n\n var onSelectKeys = function onSelectKeys(_ref3) {\n var selectedKeys = _ref3.selectedKeys;\n setFilteredKeysSync(selectedKeys);\n };\n\n React.useEffect(function () {\n onSelectKeys({\n selectedKeys: propFilteredKeys || []\n });\n }, [propFilteredKeys]); // ====================== Open Keys ======================\n\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n openKeys = _React$useState4[0],\n setOpenKeys = _React$useState4[1];\n\n var openRef = React.useRef();\n\n var onOpenChange = function onOpenChange(keys) {\n openRef.current = window.setTimeout(function () {\n setOpenKeys(keys);\n });\n };\n\n var onMenuClick = function onMenuClick() {\n window.clearTimeout(openRef.current);\n };\n\n React.useEffect(function () {\n return function () {\n window.clearTimeout(openRef.current);\n };\n }, []); // ======================= Submit ========================\n\n var internalTriggerFilter = function internalTriggerFilter(keys) {\n var mergedKeys = keys && keys.length ? keys : null;\n\n if (mergedKeys === null && (!filterState || !filterState.filteredKeys)) {\n return null;\n }\n\n if (isEqual(mergedKeys, filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys)) {\n return null;\n }\n\n triggerFilter({\n column: column,\n key: columnKey,\n filteredKeys: mergedKeys\n });\n };\n\n var onConfirm = function onConfirm() {\n triggerVisible(false);\n internalTriggerFilter(getFilteredKeysSync());\n };\n\n var onReset = function onReset() {\n setFilteredKeysSync([]);\n triggerVisible(false);\n internalTriggerFilter([]);\n };\n\n var doFilter = function doFilter() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n closeDropdown: true\n },\n closeDropdown = _ref4.closeDropdown;\n\n if (closeDropdown) {\n triggerVisible(false);\n }\n\n internalTriggerFilter(getFilteredKeysSync());\n };\n\n var onVisibleChange = function onVisibleChange(newVisible) {\n if (newVisible && propFilteredKeys !== undefined) {\n // Sync filteredKeys on appear in controlled mode (propFilteredKeys !== undefiend)\n setFilteredKeysSync(propFilteredKeys || []);\n }\n\n triggerVisible(newVisible); // Default will filter when closed\n\n if (!newVisible && !column.filterDropdown) {\n onConfirm();\n }\n }; // ======================== Style ========================\n\n\n var dropdownMenuClass = classNames(_defineProperty({}, \"\".concat(dropdownPrefixCls, \"-menu-without-submenu\"), !hasSubMenu(column.filters || [])));\n var dropdownContent;\n\n if (typeof column.filterDropdown === 'function') {\n dropdownContent = column.filterDropdown({\n prefixCls: \"\".concat(dropdownPrefixCls, \"-custom\"),\n setSelectedKeys: function setSelectedKeys(selectedKeys) {\n return onSelectKeys({\n selectedKeys: selectedKeys\n });\n },\n selectedKeys: getFilteredKeysSync(),\n confirm: doFilter,\n clearFilters: onReset,\n filters: column.filters,\n visible: mergedVisible\n });\n } else if (column.filterDropdown) {\n dropdownContent = column.filterDropdown;\n } else {\n var selectedKeys = getFilteredKeysSync() || [];\n dropdownContent = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Menu, {\n multiple: filterMultiple,\n prefixCls: \"\".concat(dropdownPrefixCls, \"-menu\"),\n className: dropdownMenuClass,\n onClick: onMenuClick,\n onSelect: onSelectKeys,\n onDeselect: onSelectKeys,\n selectedKeys: selectedKeys,\n getPopupContainer: getPopupContainer,\n openKeys: openKeys,\n onOpenChange: onOpenChange\n }, renderFilterItems({\n filters: column.filters || [],\n prefixCls: prefixCls,\n filteredKeys: getFilteredKeysSync(),\n filterMultiple: filterMultiple,\n locale: locale\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-dropdown-btns\")\n }, /*#__PURE__*/React.createElement(Button, {\n type: \"link\",\n size: \"small\",\n disabled: selectedKeys.length === 0,\n onClick: onReset\n }, locale.filterReset), /*#__PURE__*/React.createElement(Button, {\n type: \"primary\",\n size: \"small\",\n onClick: onConfirm\n }, locale.filterConfirm)));\n }\n\n var menu = /*#__PURE__*/React.createElement(FilterDropdownMenuWrapper, {\n className: \"\".concat(prefixCls, \"-dropdown\")\n }, dropdownContent);\n var filterIcon;\n\n if (typeof column.filterIcon === 'function') {\n filterIcon = column.filterIcon(filtered);\n } else if (column.filterIcon) {\n filterIcon = column.filterIcon;\n } else {\n filterIcon = /*#__PURE__*/React.createElement(FilterFilled, null);\n }\n\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction;\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-column\"))\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-column-title\")\n }, children), /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-trigger-container\"), _defineProperty({}, \"\".concat(prefixCls, \"-trigger-container-open\"), mergedVisible)),\n onClick: function onClick(e) {\n e.stopPropagation();\n }\n }, /*#__PURE__*/React.createElement(Dropdown, {\n overlay: menu,\n trigger: ['click'],\n visible: mergedVisible,\n onVisibleChange: onVisibleChange,\n getPopupContainer: getPopupContainer,\n placement: direction === 'rtl' ? 'bottomLeft' : 'bottomRight'\n }, /*#__PURE__*/React.createElement(\"span\", {\n role: \"button\",\n tabIndex: -1,\n className: classNames(\"\".concat(prefixCls, \"-trigger\"), {\n active: filtered\n })\n }, filterIcon))));\n}\n\nexport default FilterDropdown;","import * as React from 'react';\nimport useForceUpdate from './useForceUpdate';\nexport default function useSyncState(initialValue) {\n var ref = React.useRef(initialValue);\n var forceUpdate = useForceUpdate();\n return [function () {\n return ref.current;\n }, function (newValue) {\n ref.current = newValue; // re-render\n\n forceUpdate();\n }];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { getColumnPos, renderColumnTitle, getColumnKey } from '../../util';\nimport FilterDropdown from './FilterDropdown';\n\nfunction collectFilterStates(columns, init, pos) {\n var filterStates = [];\n (columns || []).forEach(function (column, index) {\n var _a;\n\n var columnPos = getColumnPos(index, pos);\n\n if ('children' in column) {\n filterStates = [].concat(_toConsumableArray(filterStates), _toConsumableArray(collectFilterStates(column.children, init, columnPos)));\n } else if (column.filters || 'filterDropdown' in column || 'onFilter' in column) {\n if ('filteredValue' in column) {\n // Controlled\n var filteredValues = column.filteredValue;\n\n if (!('filterDropdown' in column)) {\n filteredValues = (_a = filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.map(String)) !== null && _a !== void 0 ? _a : filteredValues;\n }\n\n filterStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n filteredKeys: filteredValues,\n forceFiltered: column.filtered\n });\n } else {\n // Uncontrolled\n filterStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n filteredKeys: init && column.defaultFilteredValue ? column.defaultFilteredValue : undefined,\n forceFiltered: column.filtered\n });\n }\n }\n });\n return filterStates;\n}\n\nfunction injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, triggerFilter, getPopupContainer, locale, pos) {\n return columns.map(function (column, index) {\n var columnPos = getColumnPos(index, pos);\n var _column$filterMultipl = column.filterMultiple,\n filterMultiple = _column$filterMultipl === void 0 ? true : _column$filterMultipl;\n var newColumn = column;\n\n if (newColumn.filters || newColumn.filterDropdown) {\n var columnKey = getColumnKey(newColumn, columnPos);\n var filterState = filterStates.find(function (_ref) {\n var key = _ref.key;\n return columnKey === key;\n });\n newColumn = _extends(_extends({}, newColumn), {\n title: function title(renderProps) {\n return /*#__PURE__*/React.createElement(FilterDropdown, {\n prefixCls: \"\".concat(prefixCls, \"-filter\"),\n dropdownPrefixCls: dropdownPrefixCls,\n column: newColumn,\n columnKey: columnKey,\n filterState: filterState,\n filterMultiple: filterMultiple,\n triggerFilter: triggerFilter,\n locale: locale,\n getPopupContainer: getPopupContainer\n }, renderColumnTitle(column.title, renderProps));\n }\n });\n }\n\n if ('children' in newColumn) {\n newColumn = _extends(_extends({}, newColumn), {\n children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, triggerFilter, getPopupContainer, locale, columnPos)\n });\n }\n\n return newColumn;\n });\n}\n\nfunction flattenKeys(filters) {\n var keys = [];\n (filters || []).forEach(function (_ref2) {\n var value = _ref2.value,\n children = _ref2.children;\n keys.push(value);\n\n if (children) {\n keys = [].concat(_toConsumableArray(keys), _toConsumableArray(flattenKeys(children)));\n }\n });\n return keys;\n}\n\nfunction generateFilterInfo(filterStates) {\n var currentFilters = {};\n filterStates.forEach(function (_ref3) {\n var key = _ref3.key,\n filteredKeys = _ref3.filteredKeys,\n column = _ref3.column;\n var filters = column.filters,\n filterDropdown = column.filterDropdown;\n\n if (filterDropdown) {\n currentFilters[key] = filteredKeys || null;\n } else if (Array.isArray(filteredKeys)) {\n var keys = flattenKeys(filters);\n currentFilters[key] = keys.filter(function (originKey) {\n return filteredKeys.includes(String(originKey));\n });\n } else {\n currentFilters[key] = null;\n }\n });\n return currentFilters;\n}\n\nexport function getFilterData(data, filterStates) {\n return filterStates.reduce(function (currentData, filterState) {\n var _filterState$column = filterState.column,\n onFilter = _filterState$column.onFilter,\n filters = _filterState$column.filters,\n filteredKeys = filterState.filteredKeys;\n\n if (onFilter && filteredKeys && filteredKeys.length) {\n return currentData.filter(function (record) {\n return filteredKeys.some(function (key) {\n var keys = flattenKeys(filters);\n var keyIndex = keys.findIndex(function (k) {\n return String(k) === String(key);\n });\n var realKey = keyIndex !== -1 ? keys[keyIndex] : key;\n return onFilter(realKey, record);\n });\n });\n }\n\n return currentData;\n }, data);\n}\n\nfunction useFilter(_ref4) {\n var prefixCls = _ref4.prefixCls,\n dropdownPrefixCls = _ref4.dropdownPrefixCls,\n mergedColumns = _ref4.mergedColumns,\n onFilterChange = _ref4.onFilterChange,\n getPopupContainer = _ref4.getPopupContainer,\n tableLocale = _ref4.locale;\n\n var _React$useState = React.useState(collectFilterStates(mergedColumns, true)),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n filterStates = _React$useState2[0],\n setFilterStates = _React$useState2[1];\n\n var mergedFilterStates = React.useMemo(function () {\n var collectedStates = collectFilterStates(mergedColumns, false); // Return if not controlled\n\n if (collectedStates.every(function (_ref5) {\n var filteredKeys = _ref5.filteredKeys;\n return filteredKeys === undefined;\n })) {\n return filterStates;\n }\n\n return collectedStates;\n }, [mergedColumns, filterStates]);\n var getFilters = React.useCallback(function () {\n return generateFilterInfo(mergedFilterStates);\n }, [mergedFilterStates]);\n\n var triggerFilter = function triggerFilter(filterState) {\n var newFilterStates = mergedFilterStates.filter(function (_ref6) {\n var key = _ref6.key;\n return key !== filterState.key;\n });\n newFilterStates.push(filterState);\n setFilterStates(newFilterStates);\n onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);\n };\n\n var transformColumns = function transformColumns(innerColumns) {\n return injectFilter(prefixCls, dropdownPrefixCls, innerColumns, mergedFilterStates, triggerFilter, getPopupContainer, tableLocale);\n };\n\n return [transformColumns, mergedFilterStates, getFilters];\n}\n\nexport default useFilter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { renderColumnTitle } from '../util';\n\nfunction fillTitle(columns, columnTitleProps) {\n return columns.map(function (column) {\n var cloneColumn = _extends({}, column);\n\n cloneColumn.title = renderColumnTitle(column.title, columnTitleProps);\n\n if ('children' in cloneColumn) {\n cloneColumn.children = fillTitle(cloneColumn.children, columnTitleProps);\n }\n\n return cloneColumn;\n });\n}\n\nexport default function useTitleColumns(columnTitleProps) {\n var filledColumns = React.useCallback(function (columns) {\n return fillTitle(columns, columnTitleProps);\n }, [columnTitleProps]);\n return [filledColumns];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\n\nfunction renderExpandIcon(locale) {\n return function expandIcon(_ref) {\n var _classNames;\n\n var prefixCls = _ref.prefixCls,\n onExpand = _ref.onExpand,\n record = _ref.record,\n expanded = _ref.expanded,\n expandable = _ref.expandable;\n var iconPrefix = \"\".concat(prefixCls, \"-row-expand-icon\");\n return /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: function onClick(e) {\n onExpand(record, e);\n e.stopPropagation();\n },\n className: classNames(iconPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(iconPrefix, \"-spaced\"), !expandable), _defineProperty(_classNames, \"\".concat(iconPrefix, \"-expanded\"), expandable && expanded), _defineProperty(_classNames, \"\".concat(iconPrefix, \"-collapsed\"), expandable && !expanded), _classNames)),\n \"aria-label\": expanded ? locale.collapse : locale.expand\n });\n };\n}\n\nexport default renderExpandIcon;","import defaultLocale from './default';\nexport default defaultLocale;","/* istanbul ignore next */\n\n/** This is a syntactic sugar for `columns` prop. So HOC will not work on this. */\n// eslint-disable-next-line no-unused-vars\nfunction Column(_) {\n return null;\n}\n\nexport default Column;","/* istanbul ignore next */\n\n/** This is a syntactic sugar for `columns` prop. So HOC will not work on this. */\n// eslint-disable-next-line no-unused-vars\nfunction ColumnGroup(_) {\n return null;\n}\n\nexport default ColumnGroup;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport RcTable, { Summary } from 'rc-table';\nimport { INTERNAL_HOOKS } from \"rc-table/es/Table\";\nimport { convertChildrenToColumns } from \"rc-table/es/hooks/useColumns\";\nimport Spin from '../spin';\nimport Pagination from '../pagination';\nimport { ConfigContext } from '../config-provider/context';\nimport usePagination, { DEFAULT_PAGE_SIZE, getPaginationParam } from './hooks/usePagination';\nimport useLazyKVMap from './hooks/useLazyKVMap';\nimport useSelection, { SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE } from './hooks/useSelection';\nimport useSorter, { getSortData } from './hooks/useSorter';\nimport useFilter, { getFilterData } from './hooks/useFilter';\nimport useTitleColumns from './hooks/useTitleColumns';\nimport renderExpandIcon from './ExpandIcon';\nimport scrollTo from '../_util/scrollTo';\nimport defaultLocale from '../locale/en_US';\nimport SizeContext from '../config-provider/SizeContext';\nimport Column from './Column';\nimport ColumnGroup from './ColumnGroup';\nimport devWarning from '../_util/devWarning';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nvar EMPTY_LIST = [];\n\nfunction Table(props) {\n var _classNames3;\n\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n customizeSize = props.size,\n bordered = props.bordered,\n customizeDropdownPrefixCls = props.dropdownPrefixCls,\n dataSource = props.dataSource,\n pagination = props.pagination,\n rowSelection = props.rowSelection,\n rowKey = props.rowKey,\n rowClassName = props.rowClassName,\n columns = props.columns,\n children = props.children,\n legacyChildrenColumnName = props.childrenColumnName,\n onChange = props.onChange,\n getPopupContainer = props.getPopupContainer,\n loading = props.loading,\n expandIcon = props.expandIcon,\n expandable = props.expandable,\n expandedRowRender = props.expandedRowRender,\n expandIconColumnIndex = props.expandIconColumnIndex,\n indentSize = props.indentSize,\n scroll = props.scroll,\n sortDirections = props.sortDirections,\n locale = props.locale,\n _props$showSorterTool = props.showSorterTooltip,\n showSorterTooltip = _props$showSorterTool === void 0 ? true : _props$showSorterTool;\n devWarning(!(typeof rowKey === 'function' && rowKey.length > 1), 'Table', '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.');\n var screens = useBreakpoint();\n var mergedColumns = React.useMemo(function () {\n var matched = new Set(Object.keys(screens).filter(function (m) {\n return screens[m];\n }));\n return (columns || convertChildrenToColumns(children)).filter(function (c) {\n return !c.responsive || c.responsive.some(function (r) {\n return matched.has(r);\n });\n });\n }, [children, columns, screens]);\n var tableProps = omit(props, ['className', 'style', 'columns']);\n var size = React.useContext(SizeContext);\n\n var _React$useContext = React.useContext(ConfigContext),\n _React$useContext$loc = _React$useContext.locale,\n contextLocale = _React$useContext$loc === void 0 ? defaultLocale : _React$useContext$loc,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction;\n\n var mergedSize = customizeSize || size;\n\n var tableLocale = _extends(_extends({}, contextLocale.Table), locale);\n\n var rawData = dataSource || EMPTY_LIST;\n\n var _React$useContext2 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext2.getPrefixCls;\n\n var prefixCls = getPrefixCls('table', customizePrefixCls);\n var dropdownPrefixCls = getPrefixCls('dropdown', customizeDropdownPrefixCls);\n\n var mergedExpandable = _extends({\n childrenColumnName: legacyChildrenColumnName,\n expandIconColumnIndex: expandIconColumnIndex\n }, expandable);\n\n var _mergedExpandable$chi = mergedExpandable.childrenColumnName,\n childrenColumnName = _mergedExpandable$chi === void 0 ? 'children' : _mergedExpandable$chi;\n var expandType = React.useMemo(function () {\n if (rawData.some(function (item) {\n var _a;\n\n return (_a = item) === null || _a === void 0 ? void 0 : _a[childrenColumnName];\n })) {\n return 'nest';\n }\n\n if (expandedRowRender || expandable && expandable.expandedRowRender) {\n return 'row';\n }\n\n return null;\n }, [rawData]);\n var internalRefs = {\n body: React.useRef()\n }; // ============================ RowKey ============================\n\n var getRowKey = React.useMemo(function () {\n if (typeof rowKey === 'function') {\n return rowKey;\n }\n\n return function (record) {\n var _a;\n\n return (_a = record) === null || _a === void 0 ? void 0 : _a[rowKey];\n };\n }, [rowKey]);\n\n var _useLazyKVMap = useLazyKVMap(rawData, childrenColumnName, getRowKey),\n _useLazyKVMap2 = _slicedToArray(_useLazyKVMap, 1),\n getRecordByKey = _useLazyKVMap2[0]; // ============================ Events =============================\n\n\n var changeEventInfo = {};\n\n var triggerOnChange = function triggerOnChange(info, action) {\n var reset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var changeInfo = _extends(_extends({}, changeEventInfo), info);\n\n if (reset) {\n changeEventInfo.resetPagination(); // Reset event param\n\n if (changeInfo.pagination.current) {\n changeInfo.pagination.current = 1;\n } // Trigger pagination events\n\n\n if (pagination && pagination.onChange) {\n pagination.onChange(1, changeInfo.pagination.pageSize);\n }\n }\n\n if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body.current) {\n scrollTo(0, {\n getContainer: function getContainer() {\n return internalRefs.body.current;\n }\n });\n }\n\n onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo.pagination, changeInfo.filters, changeInfo.sorter, {\n currentDataSource: getFilterData(getSortData(rawData, changeInfo.sorterStates, childrenColumnName), changeInfo.filterStates),\n action: action\n });\n };\n /**\n * Controlled state in `columns` is not a good idea that makes too many code (1000+ line?) to read\n * state out and then put it back to title render. Move these code into `hooks` but still too\n * complex. We should provides Table props like `sorter` & `filter` to handle control in next big version.\n */\n // ============================ Sorter =============================\n\n\n var onSorterChange = function onSorterChange(sorter, sorterStates) {\n triggerOnChange({\n sorter: sorter,\n sorterStates: sorterStates\n }, 'sort', false);\n };\n\n var _useSorter = useSorter({\n prefixCls: prefixCls,\n mergedColumns: mergedColumns,\n onSorterChange: onSorterChange,\n sortDirections: sortDirections || ['ascend', 'descend'],\n tableLocale: tableLocale,\n showSorterTooltip: showSorterTooltip\n }),\n _useSorter2 = _slicedToArray(_useSorter, 4),\n transformSorterColumns = _useSorter2[0],\n sortStates = _useSorter2[1],\n sorterTitleProps = _useSorter2[2],\n getSorters = _useSorter2[3];\n\n var sortedData = React.useMemo(function () {\n return getSortData(rawData, sortStates, childrenColumnName);\n }, [rawData, sortStates]);\n changeEventInfo.sorter = getSorters();\n changeEventInfo.sorterStates = sortStates; // ============================ Filter ============================\n\n var onFilterChange = function onFilterChange(filters, filterStates) {\n triggerOnChange({\n filters: filters,\n filterStates: filterStates\n }, 'filter', true);\n };\n\n var _useFilter = useFilter({\n prefixCls: prefixCls,\n locale: tableLocale,\n dropdownPrefixCls: dropdownPrefixCls,\n mergedColumns: mergedColumns,\n onFilterChange: onFilterChange,\n getPopupContainer: getPopupContainer\n }),\n _useFilter2 = _slicedToArray(_useFilter, 3),\n transformFilterColumns = _useFilter2[0],\n filterStates = _useFilter2[1],\n getFilters = _useFilter2[2];\n\n var mergedData = getFilterData(sortedData, filterStates);\n changeEventInfo.filters = getFilters();\n changeEventInfo.filterStates = filterStates; // ============================ Column ============================\n\n var columnTitleProps = React.useMemo(function () {\n return _extends({}, sorterTitleProps);\n }, [sorterTitleProps]);\n\n var _useTitleColumns = useTitleColumns(columnTitleProps),\n _useTitleColumns2 = _slicedToArray(_useTitleColumns, 1),\n transformTitleColumns = _useTitleColumns2[0]; // ========================== Pagination ==========================\n\n\n var onPaginationChange = function onPaginationChange(current, pageSize) {\n triggerOnChange({\n pagination: _extends(_extends({}, changeEventInfo.pagination), {\n current: current,\n pageSize: pageSize\n })\n }, 'paginate');\n };\n\n var _usePagination = usePagination(mergedData.length, pagination, onPaginationChange),\n _usePagination2 = _slicedToArray(_usePagination, 2),\n mergedPagination = _usePagination2[0],\n resetPagination = _usePagination2[1];\n\n changeEventInfo.pagination = pagination === false ? {} : getPaginationParam(pagination, mergedPagination);\n changeEventInfo.resetPagination = resetPagination; // ============================= Data =============================\n\n var pageData = React.useMemo(function () {\n if (pagination === false || !mergedPagination.pageSize) {\n return mergedData;\n }\n\n var _mergedPagination$cur = mergedPagination.current,\n current = _mergedPagination$cur === void 0 ? 1 : _mergedPagination$cur,\n total = mergedPagination.total,\n _mergedPagination$pag = mergedPagination.pageSize,\n pageSize = _mergedPagination$pag === void 0 ? DEFAULT_PAGE_SIZE : _mergedPagination$pag;\n devWarning(current > 0, 'Table', '`current` should be positive number.'); // Dynamic table data\n\n if (mergedData.length < total) {\n if (mergedData.length > pageSize) {\n devWarning(false, 'Table', '`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.');\n return mergedData.slice((current - 1) * pageSize, current * pageSize);\n }\n\n return mergedData;\n }\n\n return mergedData.slice((current - 1) * pageSize, current * pageSize);\n }, [!!pagination, mergedData, mergedPagination && mergedPagination.current, mergedPagination && mergedPagination.pageSize, mergedPagination && mergedPagination.total]); // ========================== Selections ==========================\n\n var _useSelection = useSelection(rowSelection, {\n prefixCls: prefixCls,\n data: mergedData,\n pageData: pageData,\n getRowKey: getRowKey,\n getRecordByKey: getRecordByKey,\n expandType: expandType,\n childrenColumnName: childrenColumnName,\n locale: tableLocale,\n expandIconColumnIndex: mergedExpandable.expandIconColumnIndex,\n getPopupContainer: getPopupContainer\n }),\n _useSelection2 = _slicedToArray(_useSelection, 2),\n transformSelectionColumns = _useSelection2[0],\n selectedKeySet = _useSelection2[1];\n\n var internalRowClassName = function internalRowClassName(record, index, indent) {\n var mergedRowClassName;\n\n if (typeof rowClassName === 'function') {\n mergedRowClassName = classNames(rowClassName(record, index, indent));\n } else {\n mergedRowClassName = classNames(rowClassName);\n }\n\n return classNames(_defineProperty({}, \"\".concat(prefixCls, \"-row-selected\"), selectedKeySet.has(getRowKey(record, index))), mergedRowClassName);\n }; // ========================== Expandable ==========================\n // Pass origin render status into `rc-table`, this can be removed when refactor with `rc-table`\n\n\n mergedExpandable.__PARENT_RENDER_ICON__ = mergedExpandable.expandIcon; // Customize expandable icon\n\n mergedExpandable.expandIcon = mergedExpandable.expandIcon || expandIcon || renderExpandIcon(tableLocale); // Adjust expand icon index, no overwrite expandIconColumnIndex if set.\n\n if (expandType === 'nest' && mergedExpandable.expandIconColumnIndex === undefined) {\n mergedExpandable.expandIconColumnIndex = rowSelection ? 1 : 0;\n } else if (mergedExpandable.expandIconColumnIndex > 0 && rowSelection) {\n mergedExpandable.expandIconColumnIndex -= 1;\n } // Indent size\n\n\n if (typeof mergedExpandable.indentSize !== 'number') {\n mergedExpandable.indentSize = typeof indentSize === 'number' ? indentSize : 15;\n } // ============================ Render ============================\n\n\n var transformColumns = React.useCallback(function (innerColumns) {\n return transformTitleColumns(transformSelectionColumns(transformFilterColumns(transformSorterColumns(innerColumns))));\n }, [transformSorterColumns, transformFilterColumns, transformSelectionColumns]);\n var topPaginationNode;\n var bottomPaginationNode;\n\n if (pagination !== false && (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.total)) {\n var paginationSize;\n\n if (mergedPagination.size) {\n paginationSize = mergedPagination.size;\n } else {\n paginationSize = mergedSize === 'small' || mergedSize === 'middle' ? 'small' : undefined;\n }\n\n var renderPagination = function renderPagination(position) {\n return /*#__PURE__*/React.createElement(Pagination, _extends({\n className: \"\".concat(prefixCls, \"-pagination \").concat(prefixCls, \"-pagination-\").concat(position)\n }, mergedPagination, {\n size: paginationSize\n }));\n };\n\n var defaultPosition = direction === 'rtl' ? 'left' : 'right';\n var position = mergedPagination.position;\n\n if (position !== null && Array.isArray(position)) {\n var topPos = position.find(function (p) {\n return p.indexOf('top') !== -1;\n });\n var bottomPos = position.find(function (p) {\n return p.indexOf('bottom') !== -1;\n });\n var isDisable = position.every(function (p) {\n return \"\".concat(p) === 'none';\n });\n\n if (!topPos && !bottomPos && !isDisable) {\n bottomPaginationNode = renderPagination(defaultPosition);\n }\n\n if (topPos) {\n topPaginationNode = renderPagination(topPos.toLowerCase().replace('top', ''));\n }\n\n if (bottomPos) {\n bottomPaginationNode = renderPagination(bottomPos.toLowerCase().replace('bottom', ''));\n }\n } else {\n bottomPaginationNode = renderPagination(defaultPosition);\n }\n } // >>>>>>>>> Spinning\n\n\n var spinProps;\n\n if (typeof loading === 'boolean') {\n spinProps = {\n spinning: loading\n };\n } else if (_typeof(loading) === 'object') {\n spinProps = _extends({\n spinning: true\n }, loading);\n }\n\n var wrapperClassNames = classNames(\"\".concat(prefixCls, \"-wrapper\"), _defineProperty({}, \"\".concat(prefixCls, \"-wrapper-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperClassNames,\n style: style\n }, /*#__PURE__*/React.createElement(Spin, _extends({\n spinning: false\n }, spinProps), topPaginationNode, /*#__PURE__*/React.createElement(RcTable, _extends({}, tableProps, {\n columns: mergedColumns,\n direction: direction,\n expandable: mergedExpandable,\n prefixCls: prefixCls,\n className: classNames((_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-middle\"), mergedSize === 'middle'), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-small\"), mergedSize === 'small'), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-empty\"), rawData.length === 0), _classNames3)),\n data: pageData,\n rowKey: getRowKey,\n rowClassName: internalRowClassName,\n emptyText: locale && locale.emptyText || renderEmpty('Table') // Internal\n ,\n internalHooks: INTERNAL_HOOKS,\n internalRefs: internalRefs,\n transformColumns: transformColumns\n })), bottomPaginationNode));\n}\n\nTable.defaultProps = {\n rowKey: 'key'\n};\nTable.SELECTION_ALL = SELECTION_ALL;\nTable.SELECTION_INVERT = SELECTION_INVERT;\nTable.SELECTION_NONE = SELECTION_NONE;\nTable.Column = Column;\nTable.ColumnGroup = ColumnGroup;\nTable.Summary = Summary;\nexport default Table;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nexport default function useLazyKVMap(data, childrenColumnName, getRowKey) {\n var mapCacheRef = React.useRef({});\n\n function getRecordByKey(key) {\n if (!mapCacheRef.current || mapCacheRef.current.data !== data || mapCacheRef.current.childrenColumnName !== childrenColumnName || mapCacheRef.current.getRowKey !== getRowKey) {\n var kvMap = new Map();\n /* eslint-disable no-inner-declarations */\n\n function dig(records) {\n records.forEach(function (record, index) {\n var rowKey = getRowKey(record, index);\n kvMap.set(rowKey, record);\n\n if (record && _typeof(record) === 'object' && childrenColumnName in record) {\n dig(record[childrenColumnName] || []);\n }\n });\n }\n /* eslint-enable */\n\n\n dig(data);\n mapCacheRef.current = {\n data: data,\n childrenColumnName: childrenColumnName,\n kvMap: kvMap,\n getRowKey: getRowKey\n };\n }\n\n return mapCacheRef.current.kvMap.get(key);\n }\n\n return [getRecordByKey];\n}","import Table from './Table';\nexport default Table;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\n\nvar CheckableTag = function CheckableTag(_a) {\n var _classNames;\n\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n checked = _a.checked,\n onChange = _a.onChange,\n onClick = _a.onClick,\n restProps = __rest(_a, [\"prefixCls\", \"className\", \"checked\", \"onChange\", \"onClick\"]);\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n\n var handleClick = function handleClick(e) {\n onChange === null || onChange === void 0 ? void 0 : onChange(!checked);\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n\n var prefixCls = getPrefixCls('tag', customizePrefixCls);\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable-checked\"), checked), _classNames), className);\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, restProps, {\n className: cls,\n onClick: handleClick\n }));\n};\n\nexport default CheckableTag;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport CheckableTag from './CheckableTag';\nimport { ConfigContext } from '../config-provider';\nimport { PresetColorTypes, PresetStatusColorTypes } from '../_util/colors';\nimport Wave from '../_util/wave';\nvar PresetColorRegex = new RegExp(\"^(\".concat(PresetColorTypes.join('|'), \")(-inverse)?$\"));\nvar PresetStatusColorRegex = new RegExp(\"^(\".concat(PresetStatusColorTypes.join('|'), \")$\"));\n\nvar InternalTag = function InternalTag(_a, ref) {\n var _classNames;\n\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n style = _a.style,\n children = _a.children,\n icon = _a.icon,\n color = _a.color,\n onClose = _a.onClose,\n closeIcon = _a.closeIcon,\n _a$closable = _a.closable,\n closable = _a$closable === void 0 ? false : _a$closable,\n props = __rest(_a, [\"prefixCls\", \"className\", \"style\", \"children\", \"icon\", \"color\", \"onClose\", \"closeIcon\", \"closable\"]);\n\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visible = _React$useState2[0],\n setVisible = _React$useState2[1];\n\n React.useEffect(function () {\n if ('visible' in props) {\n setVisible(props.visible);\n }\n }, [props.visible]);\n\n var isPresetColor = function isPresetColor() {\n if (!color) {\n return false;\n }\n\n return PresetColorRegex.test(color) || PresetStatusColorRegex.test(color);\n };\n\n var tagStyle = _extends({\n backgroundColor: color && !isPresetColor() ? color : undefined\n }, style);\n\n var presetColor = isPresetColor();\n var prefixCls = getPrefixCls('tag', customizePrefixCls);\n var tagClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(color), presetColor), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-color\"), color && !presetColor), _defineProperty(_classNames, \"\".concat(prefixCls, \"-hidden\"), !visible), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n\n var handleCloseClick = function handleCloseClick(e) {\n e.stopPropagation();\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!('visible' in props)) {\n setVisible(false);\n }\n };\n\n var renderCloseIcon = function renderCloseIcon() {\n if (closable) {\n return closeIcon ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-icon\"),\n onClick: handleCloseClick\n }, closeIcon) : /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\"),\n onClick: handleCloseClick\n });\n }\n\n return null;\n };\n\n var isNeedWave = 'onClick' in props || children && children.type === 'a';\n var tagProps = omit(props, ['visible']);\n var iconNode = icon || null;\n var kids = iconNode ? /*#__PURE__*/React.createElement(React.Fragment, null, iconNode, /*#__PURE__*/React.createElement(\"span\", null, children)) : children;\n var tagNode = /*#__PURE__*/React.createElement(\"span\", _extends({}, tagProps, {\n ref: ref,\n className: tagClassName,\n style: tagStyle\n }), kids, renderCloseIcon());\n return isNeedWave ? /*#__PURE__*/React.createElement(Wave, null, tagNode) : tagNode;\n};\n\nvar Tag = /*#__PURE__*/React.forwardRef(InternalTag);\nTag.displayName = 'Tag';\nTag.CheckableTag = CheckableTag;\nexport default Tag;","/*******************************************************************************\n * Copyright (c) 2013 IBM Corp.\n *\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * and Eclipse Distribution License v1.0 which accompany this distribution.\n *\n * The Eclipse Public License is available at\n * http://www.eclipse.org/legal/epl-v10.html\n * and the Eclipse Distribution License is available at\n * http://www.eclipse.org/org/documents/edl-v10.php.\n *\n * Contributors:\n * Andrew Banks - initial API and implementation and initial documentation\n *******************************************************************************/\n// Only expose a single object name in the global namespace.\n// Everything must go through this module. Global Paho module\n// only has a single public function, client, which returns\n// a Paho client object given connection details.\n\n/**\n * Send and receive messages using web browsers.\n *

    \n * This programming interface lets a JavaScript client application use the MQTT V3.1 or\n * V3.1.1 protocol to connect to an MQTT-supporting messaging server.\n *\n * The function supported includes:\n *

      \n *
    1. Connecting to and disconnecting from a server. The server is identified by its host name and port number.\n *
    2. Specifying options that relate to the communications link with the server,\n * for example the frequency of keep-alive heartbeats, and whether SSL/TLS is required.\n *
    3. Subscribing to and receiving messages from MQTT Topics.\n *
    4. Publishing messages to MQTT Topics.\n *
    \n *

    \n * The API consists of two main objects:\n *

    \n *
    {@link Paho.Client}
    \n *
    This contains methods that provide the functionality of the API,\n * including provision of callbacks that notify the application when a message\n * arrives from or is delivered to the messaging server,\n * or when the status of its connection to the messaging server changes.
    \n *
    {@link Paho.Message}
    \n *
    This encapsulates the payload of the message along with various attributes\n * associated with its delivery, in particular the destination to which it has\n * been (or is about to be) sent.
    \n *
    \n *

    \n * The programming interface validates parameters passed to it, and will throw\n * an Error containing an error message intended for developer use, if it detects\n * an error with any parameter.\n *

    \n * Example:\n *\n *

    \nvar client = new Paho.MQTT.Client(location.hostname, Number(location.port), \"clientId\");\nclient.onConnectionLost = onConnectionLost;\nclient.onMessageArrived = onMessageArrived;\nclient.connect({onSuccess:onConnect});\n\nfunction onConnect() {\n  // Once a connection has been made, make a subscription and send a message.\n  console.log(\"onConnect\");\n  client.subscribe(\"/World\");\n  var message = new Paho.MQTT.Message(\"Hello\");\n  message.destinationName = \"/World\";\n  client.send(message);\n};\nfunction onConnectionLost(responseObject) {\n  if (responseObject.errorCode !== 0)\n\tconsole.log(\"onConnectionLost:\"+responseObject.errorMessage);\n};\nfunction onMessageArrived(message) {\n  console.log(\"onMessageArrived:\"+message.payloadString);\n  client.disconnect();\n};\n * 
    \n * @namespace Paho\n */\n\n/* jshint shadow:true */\n(function ExportLibrary(root, factory) {\n if (typeof exports === \"object\" && typeof module === \"object\") {\n module.exports = factory();\n } else if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n exports = factory();\n } else {\n //if (typeof root.Paho === \"undefined\"){\n //\troot.Paho = {};\n //}\n root.Paho = factory();\n }\n})(this, function LibraryFactory() {\n var PahoMQTT = function (global) {\n // Private variables below, these are only visible inside the function closure\n // which is used to define the module.\n var version = \"@VERSION@-@BUILDLEVEL@\";\n /**\n * @private\n */\n\n var localStorage = global.localStorage || function () {\n var data = {};\n return {\n setItem: function setItem(key, item) {\n data[key] = item;\n },\n getItem: function getItem(key) {\n return data[key];\n },\n removeItem: function removeItem(key) {\n delete data[key];\n }\n };\n }();\n /**\n * Unique message type identifiers, with associated\n * associated integer values.\n * @private\n */\n\n\n var MESSAGE_TYPE = {\n CONNECT: 1,\n CONNACK: 2,\n PUBLISH: 3,\n PUBACK: 4,\n PUBREC: 5,\n PUBREL: 6,\n PUBCOMP: 7,\n SUBSCRIBE: 8,\n SUBACK: 9,\n UNSUBSCRIBE: 10,\n UNSUBACK: 11,\n PINGREQ: 12,\n PINGRESP: 13,\n DISCONNECT: 14\n }; // Collection of utility methods used to simplify module code\n // and promote the DRY pattern.\n\n /**\n * Validate an object's parameter names to ensure they\n * match a list of expected variables name for this option\n * type. Used to ensure option object passed into the API don't\n * contain erroneous parameters.\n * @param {Object} obj - User options object\n * @param {Object} keys - valid keys and types that may exist in obj.\n * @throws {Error} Invalid option parameter found.\n * @private\n */\n\n var validate = function validate(obj, keys) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (keys.hasOwnProperty(key)) {\n if (typeof obj[key] !== keys[key]) throw new Error(format(ERROR.INVALID_TYPE, [typeof obj[key], key]));\n } else {\n var errorStr = \"Unknown property, \" + key + \". Valid properties are:\";\n\n for (var validKey in keys) {\n if (keys.hasOwnProperty(validKey)) errorStr = errorStr + \" \" + validKey;\n }\n\n throw new Error(errorStr);\n }\n }\n }\n };\n /**\n * Return a new function which runs the user function bound\n * to a fixed scope.\n * @param {function} User function\n * @param {object} Function scope\n * @return {function} User function bound to another scope\n * @private\n */\n\n\n var scope = function scope(f, _scope) {\n return function () {\n return f.apply(_scope, arguments);\n };\n };\n /**\n * Unique message type identifiers, with associated\n * associated integer values.\n * @private\n */\n\n\n var ERROR = {\n OK: {\n code: 0,\n text: \"AMQJSC0000I OK.\"\n },\n CONNECT_TIMEOUT: {\n code: 1,\n text: \"AMQJSC0001E Connect timed out.\"\n },\n SUBSCRIBE_TIMEOUT: {\n code: 2,\n text: \"AMQJS0002E Subscribe timed out.\"\n },\n UNSUBSCRIBE_TIMEOUT: {\n code: 3,\n text: \"AMQJS0003E Unsubscribe timed out.\"\n },\n PING_TIMEOUT: {\n code: 4,\n text: \"AMQJS0004E Ping timed out.\"\n },\n INTERNAL_ERROR: {\n code: 5,\n text: \"AMQJS0005E Internal error. Error Message: {0}, Stack trace: {1}\"\n },\n CONNACK_RETURNCODE: {\n code: 6,\n text: \"AMQJS0006E Bad Connack return code:{0} {1}.\"\n },\n SOCKET_ERROR: {\n code: 7,\n text: \"AMQJS0007E Socket error:{0}.\"\n },\n SOCKET_CLOSE: {\n code: 8,\n text: \"AMQJS0008I Socket closed.\"\n },\n MALFORMED_UTF: {\n code: 9,\n text: \"AMQJS0009E Malformed UTF data:{0} {1} {2}.\"\n },\n UNSUPPORTED: {\n code: 10,\n text: \"AMQJS0010E {0} is not supported by this browser.\"\n },\n INVALID_STATE: {\n code: 11,\n text: \"AMQJS0011E Invalid state {0}.\"\n },\n INVALID_TYPE: {\n code: 12,\n text: \"AMQJS0012E Invalid type {0} for {1}.\"\n },\n INVALID_ARGUMENT: {\n code: 13,\n text: \"AMQJS0013E Invalid argument {0} for {1}.\"\n },\n UNSUPPORTED_OPERATION: {\n code: 14,\n text: \"AMQJS0014E Unsupported operation.\"\n },\n INVALID_STORED_DATA: {\n code: 15,\n text: \"AMQJS0015E Invalid data in local storage key={0} value={1}.\"\n },\n INVALID_MQTT_MESSAGE_TYPE: {\n code: 16,\n text: \"AMQJS0016E Invalid MQTT message type {0}.\"\n },\n MALFORMED_UNICODE: {\n code: 17,\n text: \"AMQJS0017E Malformed Unicode string:{0} {1}.\"\n },\n BUFFER_FULL: {\n code: 18,\n text: \"AMQJS0018E Message buffer is full, maximum buffer size: {0}.\"\n }\n };\n /** CONNACK RC Meaning. */\n\n var CONNACK_RC = {\n 0: \"Connection Accepted\",\n 1: \"Connection Refused: unacceptable protocol version\",\n 2: \"Connection Refused: identifier rejected\",\n 3: \"Connection Refused: server unavailable\",\n 4: \"Connection Refused: bad user name or password\",\n 5: \"Connection Refused: not authorized\"\n };\n /**\n * Format an error message text.\n * @private\n * @param {error} ERROR value above.\n * @param {substitutions} [array] substituted into the text.\n * @return the text with the substitutions made.\n */\n\n var format = function format(error, substitutions) {\n var text = error.text;\n\n if (substitutions) {\n var field, start;\n\n for (var i = 0; i < substitutions.length; i++) {\n field = \"{\" + i + \"}\";\n start = text.indexOf(field);\n\n if (start > 0) {\n var part1 = text.substring(0, start);\n var part2 = text.substring(start + field.length);\n text = part1 + substitutions[i] + part2;\n }\n }\n }\n\n return text;\n }; //MQTT protocol and version 6 M Q I s d p 3\n\n\n var MqttProtoIdentifierv3 = [0x00, 0x06, 0x4d, 0x51, 0x49, 0x73, 0x64, 0x70, 0x03]; //MQTT proto/version for 311 4 M Q T T 4\n\n var MqttProtoIdentifierv4 = [0x00, 0x04, 0x4d, 0x51, 0x54, 0x54, 0x04];\n /**\n * Construct an MQTT wire protocol message.\n * @param type MQTT packet type.\n * @param options optional wire message attributes.\n *\n * Optional properties\n *\n * messageIdentifier: message ID in the range [0..65535]\n * payloadMessage:\tApplication Message - PUBLISH only\n * connectStrings:\tarray of 0 or more Strings to be put into the CONNECT payload\n * topics:\t\t\tarray of strings (SUBSCRIBE, UNSUBSCRIBE)\n * requestQoS:\t\tarray of QoS values [0..2]\n *\n * \"Flag\" properties\n * cleanSession:\ttrue if present / false if absent (CONNECT)\n * willMessage: \ttrue if present / false if absent (CONNECT)\n * isRetained:\t\ttrue if present / false if absent (CONNECT)\n * userName:\t\ttrue if present / false if absent (CONNECT)\n * password:\t\ttrue if present / false if absent (CONNECT)\n * keepAliveInterval:\tinteger [0..65535] (CONNECT)\n *\n * @private\n * @ignore\n */\n\n var WireMessage = function WireMessage(type, options) {\n this.type = type;\n\n for (var name in options) {\n if (options.hasOwnProperty(name)) {\n this[name] = options[name];\n }\n }\n };\n\n WireMessage.prototype.encode = function () {\n // Compute the first byte of the fixed header\n var first = (this.type & 0x0f) << 4;\n /*\n * Now calculate the length of the variable header + payload by adding up the lengths\n * of all the component parts\n */\n\n var remLength = 0;\n var topicStrLength = [];\n var destinationNameLength = 0;\n var willMessagePayloadBytes; // if the message contains a messageIdentifier then we need two bytes for that\n\n if (this.messageIdentifier !== undefined) remLength += 2;\n\n switch (this.type) {\n // If this a Connect then we need to include 12 bytes for its header\n case MESSAGE_TYPE.CONNECT:\n switch (this.mqttVersion) {\n case 3:\n remLength += MqttProtoIdentifierv3.length + 3;\n break;\n\n case 4:\n remLength += MqttProtoIdentifierv4.length + 3;\n break;\n }\n\n remLength += UTF8Length(this.clientId) + 2;\n\n if (this.willMessage !== undefined) {\n remLength += UTF8Length(this.willMessage.destinationName) + 2; // Will message is always a string, sent as UTF-8 characters with a preceding length.\n\n willMessagePayloadBytes = this.willMessage.payloadBytes;\n if (!(willMessagePayloadBytes instanceof Uint8Array)) willMessagePayloadBytes = new Uint8Array(payloadBytes);\n remLength += willMessagePayloadBytes.byteLength + 2;\n }\n\n if (this.userName !== undefined) remLength += UTF8Length(this.userName) + 2;\n if (this.password !== undefined) remLength += UTF8Length(this.password) + 2;\n break;\n // Subscribe, Unsubscribe can both contain topic strings\n\n case MESSAGE_TYPE.SUBSCRIBE:\n first |= 0x02; // Qos = 1;\n\n for (var i = 0; i < this.topics.length; i++) {\n topicStrLength[i] = UTF8Length(this.topics[i]);\n remLength += topicStrLength[i] + 2;\n }\n\n remLength += this.requestedQos.length; // 1 byte for each topic's Qos\n // QoS on Subscribe only\n\n break;\n\n case MESSAGE_TYPE.UNSUBSCRIBE:\n first |= 0x02; // Qos = 1;\n\n for (var i = 0; i < this.topics.length; i++) {\n topicStrLength[i] = UTF8Length(this.topics[i]);\n remLength += topicStrLength[i] + 2;\n }\n\n break;\n\n case MESSAGE_TYPE.PUBREL:\n first |= 0x02; // Qos = 1;\n\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n if (this.payloadMessage.duplicate) first |= 0x08;\n first = first |= this.payloadMessage.qos << 1;\n if (this.payloadMessage.retained) first |= 0x01;\n destinationNameLength = UTF8Length(this.payloadMessage.destinationName);\n remLength += destinationNameLength + 2;\n var payloadBytes = this.payloadMessage.payloadBytes;\n remLength += payloadBytes.byteLength;\n if (payloadBytes instanceof ArrayBuffer) payloadBytes = new Uint8Array(payloadBytes);else if (!(payloadBytes instanceof Uint8Array)) payloadBytes = new Uint8Array(payloadBytes.buffer);\n break;\n\n case MESSAGE_TYPE.DISCONNECT:\n break;\n\n default:\n break;\n } // Now we can allocate a buffer for the message\n\n\n var mbi = encodeMBI(remLength); // Convert the length to MQTT MBI format\n\n var pos = mbi.length + 1; // Offset of start of variable header\n\n var buffer = new ArrayBuffer(remLength + pos);\n var byteStream = new Uint8Array(buffer); // view it as a sequence of bytes\n //Write the fixed header into the buffer\n\n byteStream[0] = first;\n byteStream.set(mbi, 1); // If this is a PUBLISH then the variable header starts with a topic\n\n if (this.type == MESSAGE_TYPE.PUBLISH) pos = writeString(this.payloadMessage.destinationName, destinationNameLength, byteStream, pos); // If this is a CONNECT then the variable header contains the protocol name/version, flags and keepalive time\n else if (this.type == MESSAGE_TYPE.CONNECT) {\n switch (this.mqttVersion) {\n case 3:\n byteStream.set(MqttProtoIdentifierv3, pos);\n pos += MqttProtoIdentifierv3.length;\n break;\n\n case 4:\n byteStream.set(MqttProtoIdentifierv4, pos);\n pos += MqttProtoIdentifierv4.length;\n break;\n }\n\n var connectFlags = 0;\n if (this.cleanSession) connectFlags = 0x02;\n\n if (this.willMessage !== undefined) {\n connectFlags |= 0x04;\n connectFlags |= this.willMessage.qos << 3;\n\n if (this.willMessage.retained) {\n connectFlags |= 0x20;\n }\n }\n\n if (this.userName !== undefined) connectFlags |= 0x80;\n if (this.password !== undefined) connectFlags |= 0x40;\n byteStream[pos++] = connectFlags;\n pos = writeUint16(this.keepAliveInterval, byteStream, pos);\n } // Output the messageIdentifier - if there is one\n\n if (this.messageIdentifier !== undefined) pos = writeUint16(this.messageIdentifier, byteStream, pos);\n\n switch (this.type) {\n case MESSAGE_TYPE.CONNECT:\n pos = writeString(this.clientId, UTF8Length(this.clientId), byteStream, pos);\n\n if (this.willMessage !== undefined) {\n pos = writeString(this.willMessage.destinationName, UTF8Length(this.willMessage.destinationName), byteStream, pos);\n pos = writeUint16(willMessagePayloadBytes.byteLength, byteStream, pos);\n byteStream.set(willMessagePayloadBytes, pos);\n pos += willMessagePayloadBytes.byteLength;\n }\n\n if (this.userName !== undefined) pos = writeString(this.userName, UTF8Length(this.userName), byteStream, pos);\n if (this.password !== undefined) pos = writeString(this.password, UTF8Length(this.password), byteStream, pos);\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n // PUBLISH has a text or binary payload, if text do not add a 2 byte length field, just the UTF characters.\n byteStream.set(payloadBytes, pos);\n break;\n // \t case MESSAGE_TYPE.PUBREC:\n // \t case MESSAGE_TYPE.PUBREL:\n // \t case MESSAGE_TYPE.PUBCOMP:\n // \t \tbreak;\n\n case MESSAGE_TYPE.SUBSCRIBE:\n // SUBSCRIBE has a list of topic strings and request QoS\n for (var i = 0; i < this.topics.length; i++) {\n pos = writeString(this.topics[i], topicStrLength[i], byteStream, pos);\n byteStream[pos++] = this.requestedQos[i];\n }\n\n break;\n\n case MESSAGE_TYPE.UNSUBSCRIBE:\n // UNSUBSCRIBE has a list of topic strings\n for (var i = 0; i < this.topics.length; i++) {\n pos = writeString(this.topics[i], topicStrLength[i], byteStream, pos);\n }\n\n break;\n\n default: // Do nothing.\n\n }\n\n return buffer;\n };\n\n function decodeMessage(input, pos) {\n var startingPos = pos;\n var first = input[pos];\n var type = first >> 4;\n var messageInfo = first &= 0x0f;\n pos += 1; // Decode the remaining length (MBI format)\n\n var digit;\n var remLength = 0;\n var multiplier = 1;\n\n do {\n if (pos == input.length) {\n return [null, startingPos];\n }\n\n digit = input[pos++];\n remLength += (digit & 0x7F) * multiplier;\n multiplier *= 128;\n } while ((digit & 0x80) !== 0);\n\n var endPos = pos + remLength;\n\n if (endPos > input.length) {\n return [null, startingPos];\n }\n\n var wireMessage = new WireMessage(type);\n\n switch (type) {\n case MESSAGE_TYPE.CONNACK:\n var connectAcknowledgeFlags = input[pos++];\n if (connectAcknowledgeFlags & 0x01) wireMessage.sessionPresent = true;\n wireMessage.returnCode = input[pos++];\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n var qos = messageInfo >> 1 & 0x03;\n var len = readUint16(input, pos);\n pos += 2;\n var topicName = parseUTF8(input, pos, len);\n pos += len; // If QoS 1 or 2 there will be a messageIdentifier\n\n if (qos > 0) {\n wireMessage.messageIdentifier = readUint16(input, pos);\n pos += 2;\n }\n\n var message = new Message(input.subarray(pos, endPos));\n if ((messageInfo & 0x01) == 0x01) message.retained = true;\n if ((messageInfo & 0x08) == 0x08) message.duplicate = true;\n message.qos = qos;\n message.destinationName = topicName;\n wireMessage.payloadMessage = message;\n break;\n\n case MESSAGE_TYPE.PUBACK:\n case MESSAGE_TYPE.PUBREC:\n case MESSAGE_TYPE.PUBREL:\n case MESSAGE_TYPE.PUBCOMP:\n case MESSAGE_TYPE.UNSUBACK:\n wireMessage.messageIdentifier = readUint16(input, pos);\n break;\n\n case MESSAGE_TYPE.SUBACK:\n wireMessage.messageIdentifier = readUint16(input, pos);\n pos += 2;\n wireMessage.returnCode = input.subarray(pos, endPos);\n break;\n\n default:\n break;\n }\n\n return [wireMessage, endPos];\n }\n\n function writeUint16(input, buffer, offset) {\n buffer[offset++] = input >> 8; //MSB\n\n buffer[offset++] = input % 256; //LSB\n\n return offset;\n }\n\n function writeString(input, utf8Length, buffer, offset) {\n offset = writeUint16(utf8Length, buffer, offset);\n stringToUTF8(input, buffer, offset);\n return offset + utf8Length;\n }\n\n function readUint16(buffer, offset) {\n return 256 * buffer[offset] + buffer[offset + 1];\n }\n /**\n * Encodes an MQTT Multi-Byte Integer\n * @private\n */\n\n\n function encodeMBI(number) {\n var output = new Array(1);\n var numBytes = 0;\n\n do {\n var digit = number % 128;\n number = number >> 7;\n\n if (number > 0) {\n digit |= 0x80;\n }\n\n output[numBytes++] = digit;\n } while (number > 0 && numBytes < 4);\n\n return output;\n }\n /**\n * Takes a String and calculates its length in bytes when encoded in UTF8.\n * @private\n */\n\n\n function UTF8Length(input) {\n var output = 0;\n\n for (var i = 0; i < input.length; i++) {\n var charCode = input.charCodeAt(i);\n\n if (charCode > 0x7FF) {\n // Surrogate pair means its a 4 byte character\n if (0xD800 <= charCode && charCode <= 0xDBFF) {\n i++;\n output++;\n }\n\n output += 3;\n } else if (charCode > 0x7F) output += 2;else output++;\n }\n\n return output;\n }\n /**\n * Takes a String and writes it into an array as UTF8 encoded bytes.\n * @private\n */\n\n\n function stringToUTF8(input, output, start) {\n var pos = start;\n\n for (var i = 0; i < input.length; i++) {\n var charCode = input.charCodeAt(i); // Check for a surrogate pair.\n\n if (0xD800 <= charCode && charCode <= 0xDBFF) {\n var lowCharCode = input.charCodeAt(++i);\n\n if (isNaN(lowCharCode)) {\n throw new Error(format(ERROR.MALFORMED_UNICODE, [charCode, lowCharCode]));\n }\n\n charCode = (charCode - 0xD800 << 10) + (lowCharCode - 0xDC00) + 0x10000;\n }\n\n if (charCode <= 0x7F) {\n output[pos++] = charCode;\n } else if (charCode <= 0x7FF) {\n output[pos++] = charCode >> 6 & 0x1F | 0xC0;\n output[pos++] = charCode & 0x3F | 0x80;\n } else if (charCode <= 0xFFFF) {\n output[pos++] = charCode >> 12 & 0x0F | 0xE0;\n output[pos++] = charCode >> 6 & 0x3F | 0x80;\n output[pos++] = charCode & 0x3F | 0x80;\n } else {\n output[pos++] = charCode >> 18 & 0x07 | 0xF0;\n output[pos++] = charCode >> 12 & 0x3F | 0x80;\n output[pos++] = charCode >> 6 & 0x3F | 0x80;\n output[pos++] = charCode & 0x3F | 0x80;\n }\n }\n\n return output;\n }\n\n function parseUTF8(input, offset, length) {\n var output = \"\";\n var utf16;\n var pos = offset;\n\n while (pos < offset + length) {\n var byte1 = input[pos++];\n if (byte1 < 128) utf16 = byte1;else {\n var byte2 = input[pos++] - 128;\n if (byte2 < 0) throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), \"\"]));\n if (byte1 < 0xE0) // 2 byte character\n utf16 = 64 * (byte1 - 0xC0) + byte2;else {\n var byte3 = input[pos++] - 128;\n if (byte3 < 0) throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16)]));\n if (byte1 < 0xF0) // 3 byte character\n utf16 = 4096 * (byte1 - 0xE0) + 64 * byte2 + byte3;else {\n var byte4 = input[pos++] - 128;\n if (byte4 < 0) throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n if (byte1 < 0xF8) // 4 byte character\n utf16 = 262144 * (byte1 - 0xF0) + 4096 * byte2 + 64 * byte3 + byte4;else // longer encodings are not supported\n throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n }\n }\n }\n\n if (utf16 > 0xFFFF) // 4 byte character - express as a surrogate pair\n {\n utf16 -= 0x10000;\n output += String.fromCharCode(0xD800 + (utf16 >> 10)); // lead character\n\n utf16 = 0xDC00 + (utf16 & 0x3FF); // trail character\n }\n\n output += String.fromCharCode(utf16);\n }\n\n return output;\n }\n /**\n * Repeat keepalive requests, monitor responses.\n * @ignore\n */\n\n\n var Pinger = function Pinger(client, keepAliveInterval) {\n this._client = client;\n this._keepAliveInterval = keepAliveInterval * 1000;\n this.isReset = false;\n var pingReq = new WireMessage(MESSAGE_TYPE.PINGREQ).encode();\n\n var doTimeout = function doTimeout(pinger) {\n return function () {\n return doPing.apply(pinger);\n };\n };\n /** @ignore */\n\n\n var doPing = function doPing() {\n if (!this.isReset) {\n this._client._trace(\"Pinger.doPing\", \"Timed out\");\n\n this._client._disconnected(ERROR.PING_TIMEOUT.code, format(ERROR.PING_TIMEOUT));\n } else {\n this.isReset = false;\n\n this._client._trace(\"Pinger.doPing\", \"send PINGREQ\");\n\n this._client.socket.send(pingReq);\n\n this.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n }\n };\n\n this.reset = function () {\n this.isReset = true;\n clearTimeout(this.timeout);\n if (this._keepAliveInterval > 0) this.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n };\n\n this.cancel = function () {\n clearTimeout(this.timeout);\n };\n };\n /**\n * Monitor request completion.\n * @ignore\n */\n\n\n var Timeout = function Timeout(client, timeoutSeconds, action, args) {\n if (!timeoutSeconds) timeoutSeconds = 30;\n\n var doTimeout = function doTimeout(action, client, args) {\n return function () {\n return action.apply(client, args);\n };\n };\n\n this.timeout = setTimeout(doTimeout(action, client, args), timeoutSeconds * 1000);\n\n this.cancel = function () {\n clearTimeout(this.timeout);\n };\n };\n /**\n * Internal implementation of the Websockets MQTT V3.1 client.\n *\n * @name Paho.ClientImpl @constructor\n * @param {String} host the DNS nameof the webSocket host.\n * @param {Number} port the port number for that host.\n * @param {String} clientId the MQ client identifier.\n */\n\n\n var ClientImpl = function ClientImpl(uri, host, port, path, clientId) {\n // Check dependencies are satisfied in this browser.\n if (!(\"WebSocket\" in global && global.WebSocket !== null)) {\n throw new Error(format(ERROR.UNSUPPORTED, [\"WebSocket\"]));\n }\n\n if (!(\"ArrayBuffer\" in global && global.ArrayBuffer !== null)) {\n throw new Error(format(ERROR.UNSUPPORTED, [\"ArrayBuffer\"]));\n }\n\n this._trace(\"Paho.Client\", uri, host, port, path, clientId);\n\n this.host = host;\n this.port = port;\n this.path = path;\n this.uri = uri;\n this.clientId = clientId;\n this._wsuri = null; // Local storagekeys are qualified with the following string.\n // The conditional inclusion of path in the key is for backward\n // compatibility to when the path was not configurable and assumed to\n // be /mqtt\n\n this._localKey = host + \":\" + port + (path != \"/mqtt\" ? \":\" + path : \"\") + \":\" + clientId + \":\"; // Create private instance-only message queue\n // Internal queue of messages to be sent, in sending order.\n\n this._msg_queue = [];\n this._buffered_msg_queue = []; // Messages we have sent and are expecting a response for, indexed by their respective message ids.\n\n this._sentMessages = {}; // Messages we have received and acknowleged and are expecting a confirm message for\n // indexed by their respective message ids.\n\n this._receivedMessages = {}; // Internal list of callbacks to be executed when messages\n // have been successfully sent over web socket, e.g. disconnect\n // when it doesn't have to wait for ACK, just message is dispatched.\n\n this._notify_msg_sent = {}; // Unique identifier for SEND messages, incrementing\n // counter as messages are sent.\n\n this._message_identifier = 1; // Used to determine the transmission sequence of stored sent messages.\n\n this._sequence = 0; // Load the local state, if any, from the saved version, only restore state relevant to this client.\n\n for (var key in localStorage) {\n if (key.indexOf(\"Sent:\" + this._localKey) === 0 || key.indexOf(\"Received:\" + this._localKey) === 0) this.restore(key);\n }\n }; // Messaging Client public instance members.\n\n\n ClientImpl.prototype.host = null;\n ClientImpl.prototype.port = null;\n ClientImpl.prototype.path = null;\n ClientImpl.prototype.uri = null;\n ClientImpl.prototype.clientId = null; // Messaging Client private instance members.\n\n ClientImpl.prototype.socket = null;\n /* true once we have received an acknowledgement to a CONNECT packet. */\n\n ClientImpl.prototype.connected = false;\n /* The largest message identifier allowed, may not be larger than 2**16 but\n * if set smaller reduces the maximum number of outbound messages allowed.\n */\n\n ClientImpl.prototype.maxMessageIdentifier = 65536;\n ClientImpl.prototype.connectOptions = null;\n ClientImpl.prototype.hostIndex = null;\n ClientImpl.prototype.onConnected = null;\n ClientImpl.prototype.onConnectionLost = null;\n ClientImpl.prototype.onMessageDelivered = null;\n ClientImpl.prototype.onMessageArrived = null;\n ClientImpl.prototype.traceFunction = null;\n ClientImpl.prototype._msg_queue = null;\n ClientImpl.prototype._buffered_msg_queue = null;\n ClientImpl.prototype._connectTimeout = null;\n /* The sendPinger monitors how long we allow before we send data to prove to the server that we are alive. */\n\n ClientImpl.prototype.sendPinger = null;\n /* The receivePinger monitors how long we allow before we require evidence that the server is alive. */\n\n ClientImpl.prototype.receivePinger = null;\n ClientImpl.prototype._reconnectInterval = 1; // Reconnect Delay, starts at 1 second\n\n ClientImpl.prototype._reconnecting = false;\n ClientImpl.prototype._reconnectTimeout = null;\n ClientImpl.prototype.disconnectedPublishing = false;\n ClientImpl.prototype.disconnectedBufferSize = 5000;\n ClientImpl.prototype.receiveBuffer = null;\n ClientImpl.prototype._traceBuffer = null;\n ClientImpl.prototype._MAX_TRACE_ENTRIES = 100;\n\n ClientImpl.prototype.connect = function (connectOptions) {\n var connectOptionsMasked = this._traceMask(connectOptions, \"password\");\n\n this._trace(\"Client.connect\", connectOptionsMasked, this.socket, this.connected);\n\n if (this.connected) throw new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n if (this.socket) throw new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n\n if (this._reconnecting) {\n // connect() function is called while reconnect is in progress.\n // Terminate the auto reconnect process to use new connect options.\n this._reconnectTimeout.cancel();\n\n this._reconnectTimeout = null;\n this._reconnecting = false;\n }\n\n this.connectOptions = connectOptions;\n this._reconnectInterval = 1;\n this._reconnecting = false;\n\n if (connectOptions.uris) {\n this.hostIndex = 0;\n\n this._doConnect(connectOptions.uris[0]);\n } else {\n this._doConnect(this.uri);\n }\n };\n\n ClientImpl.prototype.subscribe = function (filter, subscribeOptions) {\n this._trace(\"Client.subscribe\", filter, subscribeOptions);\n\n if (!this.connected) throw new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n var wireMessage = new WireMessage(MESSAGE_TYPE.SUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n if (subscribeOptions.qos === undefined) subscribeOptions.qos = 0;\n wireMessage.requestedQos = [];\n\n for (var i = 0; i < wireMessage.topics.length; i++) {\n wireMessage.requestedQos[i] = subscribeOptions.qos;\n }\n\n if (subscribeOptions.onSuccess) {\n wireMessage.onSuccess = function (grantedQos) {\n subscribeOptions.onSuccess({\n invocationContext: subscribeOptions.invocationContext,\n grantedQos: grantedQos\n });\n };\n }\n\n if (subscribeOptions.onFailure) {\n wireMessage.onFailure = function (errorCode) {\n subscribeOptions.onFailure({\n invocationContext: subscribeOptions.invocationContext,\n errorCode: errorCode,\n errorMessage: format(errorCode)\n });\n };\n }\n\n if (subscribeOptions.timeout) {\n wireMessage.timeOut = new Timeout(this, subscribeOptions.timeout, subscribeOptions.onFailure, [{\n invocationContext: subscribeOptions.invocationContext,\n errorCode: ERROR.SUBSCRIBE_TIMEOUT.code,\n errorMessage: format(ERROR.SUBSCRIBE_TIMEOUT)\n }]);\n } // All subscriptions return a SUBACK.\n\n\n this._requires_ack(wireMessage);\n\n this._schedule_message(wireMessage);\n };\n /** @ignore */\n\n\n ClientImpl.prototype.unsubscribe = function (filter, unsubscribeOptions) {\n this._trace(\"Client.unsubscribe\", filter, unsubscribeOptions);\n\n if (!this.connected) throw new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n var wireMessage = new WireMessage(MESSAGE_TYPE.UNSUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n\n if (unsubscribeOptions.onSuccess) {\n wireMessage.callback = function () {\n unsubscribeOptions.onSuccess({\n invocationContext: unsubscribeOptions.invocationContext\n });\n };\n }\n\n if (unsubscribeOptions.timeout) {\n wireMessage.timeOut = new Timeout(this, unsubscribeOptions.timeout, unsubscribeOptions.onFailure, [{\n invocationContext: unsubscribeOptions.invocationContext,\n errorCode: ERROR.UNSUBSCRIBE_TIMEOUT.code,\n errorMessage: format(ERROR.UNSUBSCRIBE_TIMEOUT)\n }]);\n } // All unsubscribes return a SUBACK.\n\n\n this._requires_ack(wireMessage);\n\n this._schedule_message(wireMessage);\n };\n\n ClientImpl.prototype.send = function (message) {\n this._trace(\"Client.send\", message);\n\n var wireMessage = new WireMessage(MESSAGE_TYPE.PUBLISH);\n wireMessage.payloadMessage = message;\n\n if (this.connected) {\n // Mark qos 1 & 2 message as \"ACK required\"\n // For qos 0 message, invoke onMessageDelivered callback if there is one.\n // Then schedule the message.\n if (message.qos > 0) {\n this._requires_ack(wireMessage);\n } else if (this.onMessageDelivered) {\n this._notify_msg_sent[wireMessage] = this.onMessageDelivered(wireMessage.payloadMessage);\n }\n\n this._schedule_message(wireMessage);\n } else {\n // Currently disconnected, will not schedule this message\n // Check if reconnecting is in progress and disconnected publish is enabled.\n if (this._reconnecting && this.disconnectedPublishing) {\n // Check the limit which include the \"required ACK\" messages\n var messageCount = Object.keys(this._sentMessages).length + this._buffered_msg_queue.length;\n\n if (messageCount > this.disconnectedBufferSize) {\n throw new Error(format(ERROR.BUFFER_FULL, [this.disconnectedBufferSize]));\n } else {\n if (message.qos > 0) {\n // Mark this message as \"ACK required\"\n this._requires_ack(wireMessage);\n } else {\n wireMessage.sequence = ++this._sequence; // Add messages in fifo order to array, by adding to start\n\n this._buffered_msg_queue.unshift(wireMessage);\n }\n }\n } else {\n throw new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n }\n }\n };\n\n ClientImpl.prototype.disconnect = function () {\n this._trace(\"Client.disconnect\");\n\n if (this._reconnecting) {\n // disconnect() function is called while reconnect is in progress.\n // Terminate the auto reconnect process.\n this._reconnectTimeout.cancel();\n\n this._reconnectTimeout = null;\n this._reconnecting = false;\n }\n\n if (!this.socket) throw new Error(format(ERROR.INVALID_STATE, [\"not connecting or connected\"]));\n var wireMessage = new WireMessage(MESSAGE_TYPE.DISCONNECT); // Run the disconnected call back as soon as the message has been sent,\n // in case of a failure later on in the disconnect processing.\n // as a consequence, the _disconected call back may be run several times.\n\n this._notify_msg_sent[wireMessage] = scope(this._disconnected, this);\n\n this._schedule_message(wireMessage);\n };\n\n ClientImpl.prototype.getTraceLog = function () {\n if (this._traceBuffer !== null) {\n this._trace(\"Client.getTraceLog\", new Date());\n\n this._trace(\"Client.getTraceLog in flight messages\", this._sentMessages.length);\n\n for (var key in this._sentMessages) {\n this._trace(\"_sentMessages \", key, this._sentMessages[key]);\n }\n\n for (var key in this._receivedMessages) {\n this._trace(\"_receivedMessages \", key, this._receivedMessages[key]);\n }\n\n return this._traceBuffer;\n }\n };\n\n ClientImpl.prototype.startTrace = function () {\n if (this._traceBuffer === null) {\n this._traceBuffer = [];\n }\n\n this._trace(\"Client.startTrace\", new Date(), version);\n };\n\n ClientImpl.prototype.stopTrace = function () {\n delete this._traceBuffer;\n };\n\n ClientImpl.prototype._doConnect = function (wsurl) {\n // When the socket is open, this client will send the CONNECT WireMessage using the saved parameters.\n if (this.connectOptions.useSSL) {\n var uriParts = wsurl.split(\":\");\n uriParts[0] = \"wss\";\n wsurl = uriParts.join(\":\");\n }\n\n this._wsuri = wsurl;\n this.connected = false;\n\n if (this.connectOptions.mqttVersion < 4) {\n this.socket = new WebSocket(wsurl, [\"mqttv3.1\"]);\n } else {\n this.socket = new WebSocket(wsurl, [\"mqtt\"]);\n }\n\n this.socket.binaryType = \"arraybuffer\";\n this.socket.onopen = scope(this._on_socket_open, this);\n this.socket.onmessage = scope(this._on_socket_message, this);\n this.socket.onerror = scope(this._on_socket_error, this);\n this.socket.onclose = scope(this._on_socket_close, this);\n this.sendPinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n this.receivePinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n\n if (this._connectTimeout) {\n this._connectTimeout.cancel();\n\n this._connectTimeout = null;\n }\n\n this._connectTimeout = new Timeout(this, this.connectOptions.timeout, this._disconnected, [ERROR.CONNECT_TIMEOUT.code, format(ERROR.CONNECT_TIMEOUT)]);\n }; // Schedule a new message to be sent over the WebSockets\n // connection. CONNECT messages cause WebSocket connection\n // to be started. All other messages are queued internally\n // until this has happened. When WS connection starts, process\n // all outstanding messages.\n\n\n ClientImpl.prototype._schedule_message = function (message) {\n // Add messages in fifo order to array, by adding to start\n this._msg_queue.unshift(message); // Process outstanding messages in the queue if we have an open socket, and have received CONNACK.\n\n\n if (this.connected) {\n this._process_queue();\n }\n };\n\n ClientImpl.prototype.store = function (prefix, wireMessage) {\n var storedMessage = {\n type: wireMessage.type,\n messageIdentifier: wireMessage.messageIdentifier,\n version: 1\n };\n\n switch (wireMessage.type) {\n case MESSAGE_TYPE.PUBLISH:\n if (wireMessage.pubRecReceived) storedMessage.pubRecReceived = true; // Convert the payload to a hex string.\n\n storedMessage.payloadMessage = {};\n var hex = \"\";\n var messageBytes = wireMessage.payloadMessage.payloadBytes;\n\n for (var i = 0; i < messageBytes.length; i++) {\n if (messageBytes[i] <= 0xF) hex = hex + \"0\" + messageBytes[i].toString(16);else hex = hex + messageBytes[i].toString(16);\n }\n\n storedMessage.payloadMessage.payloadHex = hex;\n storedMessage.payloadMessage.qos = wireMessage.payloadMessage.qos;\n storedMessage.payloadMessage.destinationName = wireMessage.payloadMessage.destinationName;\n if (wireMessage.payloadMessage.duplicate) storedMessage.payloadMessage.duplicate = true;\n if (wireMessage.payloadMessage.retained) storedMessage.payloadMessage.retained = true; // Add a sequence number to sent messages.\n\n if (prefix.indexOf(\"Sent:\") === 0) {\n if (wireMessage.sequence === undefined) wireMessage.sequence = ++this._sequence;\n storedMessage.sequence = wireMessage.sequence;\n }\n\n break;\n\n default:\n throw Error(format(ERROR.INVALID_STORED_DATA, [prefix + this._localKey + wireMessage.messageIdentifier, storedMessage]));\n }\n\n localStorage.setItem(prefix + this._localKey + wireMessage.messageIdentifier, JSON.stringify(storedMessage));\n };\n\n ClientImpl.prototype.restore = function (key) {\n var value = localStorage.getItem(key);\n var storedMessage = JSON.parse(value);\n var wireMessage = new WireMessage(storedMessage.type, storedMessage);\n\n switch (storedMessage.type) {\n case MESSAGE_TYPE.PUBLISH:\n // Replace the payload message with a Message object.\n var hex = storedMessage.payloadMessage.payloadHex;\n var buffer = new ArrayBuffer(hex.length / 2);\n var byteStream = new Uint8Array(buffer);\n var i = 0;\n\n while (hex.length >= 2) {\n var x = parseInt(hex.substring(0, 2), 16);\n hex = hex.substring(2, hex.length);\n byteStream[i++] = x;\n }\n\n var payloadMessage = new Message(byteStream);\n payloadMessage.qos = storedMessage.payloadMessage.qos;\n payloadMessage.destinationName = storedMessage.payloadMessage.destinationName;\n if (storedMessage.payloadMessage.duplicate) payloadMessage.duplicate = true;\n if (storedMessage.payloadMessage.retained) payloadMessage.retained = true;\n wireMessage.payloadMessage = payloadMessage;\n break;\n\n default:\n throw Error(format(ERROR.INVALID_STORED_DATA, [key, value]));\n }\n\n if (key.indexOf(\"Sent:\" + this._localKey) === 0) {\n wireMessage.payloadMessage.duplicate = true;\n this._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n } else if (key.indexOf(\"Received:\" + this._localKey) === 0) {\n this._receivedMessages[wireMessage.messageIdentifier] = wireMessage;\n }\n };\n\n ClientImpl.prototype._process_queue = function () {\n var message = null; // Send all queued messages down socket connection\n\n while (message = this._msg_queue.pop()) {\n this._socket_send(message); // Notify listeners that message was successfully sent\n\n\n if (this._notify_msg_sent[message]) {\n this._notify_msg_sent[message]();\n\n delete this._notify_msg_sent[message];\n }\n }\n };\n /**\n * Expect an ACK response for this message. Add message to the set of in progress\n * messages and set an unused identifier in this message.\n * @ignore\n */\n\n\n ClientImpl.prototype._requires_ack = function (wireMessage) {\n var messageCount = Object.keys(this._sentMessages).length;\n if (messageCount > this.maxMessageIdentifier) throw Error(\"Too many messages:\" + messageCount);\n\n while (this._sentMessages[this._message_identifier] !== undefined) {\n this._message_identifier++;\n }\n\n wireMessage.messageIdentifier = this._message_identifier;\n this._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n\n if (wireMessage.type === MESSAGE_TYPE.PUBLISH) {\n this.store(\"Sent:\", wireMessage);\n }\n\n if (this._message_identifier === this.maxMessageIdentifier) {\n this._message_identifier = 1;\n }\n };\n /**\n * Called when the underlying websocket has been opened.\n * @ignore\n */\n\n\n ClientImpl.prototype._on_socket_open = function () {\n // Create the CONNECT message object.\n var wireMessage = new WireMessage(MESSAGE_TYPE.CONNECT, this.connectOptions);\n wireMessage.clientId = this.clientId;\n\n this._socket_send(wireMessage);\n };\n /**\n * Called when the underlying websocket has received a complete packet.\n * @ignore\n */\n\n\n ClientImpl.prototype._on_socket_message = function (event) {\n this._trace(\"Client._on_socket_message\", event.data);\n\n var messages = this._deframeMessages(event.data);\n\n for (var i = 0; i < messages.length; i += 1) {\n this._handleMessage(messages[i]);\n }\n };\n\n ClientImpl.prototype._deframeMessages = function (data) {\n var byteArray = new Uint8Array(data);\n var messages = [];\n\n if (this.receiveBuffer) {\n var newData = new Uint8Array(this.receiveBuffer.length + byteArray.length);\n newData.set(this.receiveBuffer);\n newData.set(byteArray, this.receiveBuffer.length);\n byteArray = newData;\n delete this.receiveBuffer;\n }\n\n try {\n var offset = 0;\n\n while (offset < byteArray.length) {\n var result = decodeMessage(byteArray, offset);\n var wireMessage = result[0];\n offset = result[1];\n\n if (wireMessage !== null) {\n messages.push(wireMessage);\n } else {\n break;\n }\n }\n\n if (offset < byteArray.length) {\n this.receiveBuffer = byteArray.subarray(offset);\n }\n } catch (error) {\n var errorStack = error.hasOwnProperty(\"stack\") == \"undefined\" ? error.stack.toString() : \"No Error Stack Available\";\n\n this._disconnected(ERROR.INTERNAL_ERROR.code, format(ERROR.INTERNAL_ERROR, [error.message, errorStack]));\n\n return;\n }\n\n return messages;\n };\n\n ClientImpl.prototype._handleMessage = function (wireMessage) {\n this._trace(\"Client._handleMessage\", wireMessage);\n\n try {\n switch (wireMessage.type) {\n case MESSAGE_TYPE.CONNACK:\n this._connectTimeout.cancel();\n\n if (this._reconnectTimeout) this._reconnectTimeout.cancel(); // If we have started using clean session then clear up the local state.\n\n if (this.connectOptions.cleanSession) {\n for (var key in this._sentMessages) {\n var sentMessage = this._sentMessages[key];\n localStorage.removeItem(\"Sent:\" + this._localKey + sentMessage.messageIdentifier);\n }\n\n this._sentMessages = {};\n\n for (var key in this._receivedMessages) {\n var receivedMessage = this._receivedMessages[key];\n localStorage.removeItem(\"Received:\" + this._localKey + receivedMessage.messageIdentifier);\n }\n\n this._receivedMessages = {};\n } // Client connected and ready for business.\n\n\n if (wireMessage.returnCode === 0) {\n this.connected = true; // Jump to the end of the list of uris and stop looking for a good host.\n\n if (this.connectOptions.uris) this.hostIndex = this.connectOptions.uris.length;\n } else {\n this._disconnected(ERROR.CONNACK_RETURNCODE.code, format(ERROR.CONNACK_RETURNCODE, [wireMessage.returnCode, CONNACK_RC[wireMessage.returnCode]]));\n\n break;\n } // Resend messages.\n\n\n var sequencedMessages = [];\n\n for (var msgId in this._sentMessages) {\n if (this._sentMessages.hasOwnProperty(msgId)) sequencedMessages.push(this._sentMessages[msgId]);\n } // Also schedule qos 0 buffered messages if any\n\n\n if (this._buffered_msg_queue.length > 0) {\n var msg = null;\n\n while (msg = this._buffered_msg_queue.pop()) {\n sequencedMessages.push(msg);\n if (this.onMessageDelivered) this._notify_msg_sent[msg] = this.onMessageDelivered(msg.payloadMessage);\n }\n } // Sort sentMessages into the original sent order.\n\n\n var sequencedMessages = sequencedMessages.sort(function (a, b) {\n return a.sequence - b.sequence;\n });\n\n for (var i = 0, len = sequencedMessages.length; i < len; i++) {\n var sentMessage = sequencedMessages[i];\n\n if (sentMessage.type == MESSAGE_TYPE.PUBLISH && sentMessage.pubRecReceived) {\n var pubRelMessage = new WireMessage(MESSAGE_TYPE.PUBREL, {\n messageIdentifier: sentMessage.messageIdentifier\n });\n\n this._schedule_message(pubRelMessage);\n } else {\n this._schedule_message(sentMessage);\n }\n } // Execute the connectOptions.onSuccess callback if there is one.\n // Will also now return if this connection was the result of an automatic\n // reconnect and which URI was successfully connected to.\n\n\n if (this.connectOptions.onSuccess) {\n this.connectOptions.onSuccess({\n invocationContext: this.connectOptions.invocationContext\n });\n }\n\n var reconnected = false;\n\n if (this._reconnecting) {\n reconnected = true;\n this._reconnectInterval = 1;\n this._reconnecting = false;\n } // Execute the onConnected callback if there is one.\n\n\n this._connected(reconnected, this._wsuri); // Process all queued messages now that the connection is established.\n\n\n this._process_queue();\n\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n this._receivePublish(wireMessage);\n\n break;\n\n case MESSAGE_TYPE.PUBACK:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier]; // If this is a re flow of a PUBACK after we have restarted receivedMessage will not exist.\n\n if (sentMessage) {\n delete this._sentMessages[wireMessage.messageIdentifier];\n localStorage.removeItem(\"Sent:\" + this._localKey + wireMessage.messageIdentifier);\n if (this.onMessageDelivered) this.onMessageDelivered(sentMessage.payloadMessage);\n }\n\n break;\n\n case MESSAGE_TYPE.PUBREC:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier]; // If this is a re flow of a PUBREC after we have restarted receivedMessage will not exist.\n\n if (sentMessage) {\n sentMessage.pubRecReceived = true;\n var pubRelMessage = new WireMessage(MESSAGE_TYPE.PUBREL, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n this.store(\"Sent:\", sentMessage);\n\n this._schedule_message(pubRelMessage);\n }\n\n break;\n\n case MESSAGE_TYPE.PUBREL:\n var receivedMessage = this._receivedMessages[wireMessage.messageIdentifier];\n localStorage.removeItem(\"Received:\" + this._localKey + wireMessage.messageIdentifier); // If this is a re flow of a PUBREL after we have restarted receivedMessage will not exist.\n\n if (receivedMessage) {\n this._receiveMessage(receivedMessage);\n\n delete this._receivedMessages[wireMessage.messageIdentifier];\n } // Always flow PubComp, we may have previously flowed PubComp but the server lost it and restarted.\n\n\n var pubCompMessage = new WireMessage(MESSAGE_TYPE.PUBCOMP, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n\n this._schedule_message(pubCompMessage);\n\n break;\n\n case MESSAGE_TYPE.PUBCOMP:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier];\n delete this._sentMessages[wireMessage.messageIdentifier];\n localStorage.removeItem(\"Sent:\" + this._localKey + wireMessage.messageIdentifier);\n if (this.onMessageDelivered) this.onMessageDelivered(sentMessage.payloadMessage);\n break;\n\n case MESSAGE_TYPE.SUBACK:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier];\n\n if (sentMessage) {\n if (sentMessage.timeOut) sentMessage.timeOut.cancel(); // This will need to be fixed when we add multiple topic support\n\n if (wireMessage.returnCode[0] === 0x80) {\n if (sentMessage.onFailure) {\n sentMessage.onFailure(wireMessage.returnCode);\n }\n } else if (sentMessage.onSuccess) {\n sentMessage.onSuccess(wireMessage.returnCode);\n }\n\n delete this._sentMessages[wireMessage.messageIdentifier];\n }\n\n break;\n\n case MESSAGE_TYPE.UNSUBACK:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier];\n\n if (sentMessage) {\n if (sentMessage.timeOut) sentMessage.timeOut.cancel();\n\n if (sentMessage.callback) {\n sentMessage.callback();\n }\n\n delete this._sentMessages[wireMessage.messageIdentifier];\n }\n\n break;\n\n case MESSAGE_TYPE.PINGRESP:\n /* The sendPinger or receivePinger may have sent a ping, the receivePinger has already been reset. */\n this.sendPinger.reset();\n break;\n\n case MESSAGE_TYPE.DISCONNECT:\n // Clients do not expect to receive disconnect packets.\n this._disconnected(ERROR.INVALID_MQTT_MESSAGE_TYPE.code, format(ERROR.INVALID_MQTT_MESSAGE_TYPE, [wireMessage.type]));\n\n break;\n\n default:\n this._disconnected(ERROR.INVALID_MQTT_MESSAGE_TYPE.code, format(ERROR.INVALID_MQTT_MESSAGE_TYPE, [wireMessage.type]));\n\n }\n } catch (error) {\n var errorStack = error.hasOwnProperty(\"stack\") == \"undefined\" ? error.stack.toString() : \"No Error Stack Available\";\n\n this._disconnected(ERROR.INTERNAL_ERROR.code, format(ERROR.INTERNAL_ERROR, [error.message, errorStack]));\n\n return;\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._on_socket_error = function (error) {\n if (!this._reconnecting) {\n this._disconnected(ERROR.SOCKET_ERROR.code, format(ERROR.SOCKET_ERROR, [error.data]));\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._on_socket_close = function () {\n if (!this._reconnecting) {\n this._disconnected(ERROR.SOCKET_CLOSE.code, format(ERROR.SOCKET_CLOSE));\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._socket_send = function (wireMessage) {\n if (wireMessage.type == 1) {\n var wireMessageMasked = this._traceMask(wireMessage, \"password\");\n\n this._trace(\"Client._socket_send\", wireMessageMasked);\n } else this._trace(\"Client._socket_send\", wireMessage);\n\n this.socket.send(wireMessage.encode());\n /* We have proved to the server we are alive. */\n\n this.sendPinger.reset();\n };\n /** @ignore */\n\n\n ClientImpl.prototype._receivePublish = function (wireMessage) {\n switch (wireMessage.payloadMessage.qos) {\n case \"undefined\":\n case 0:\n this._receiveMessage(wireMessage);\n\n break;\n\n case 1:\n var pubAckMessage = new WireMessage(MESSAGE_TYPE.PUBACK, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n\n this._schedule_message(pubAckMessage);\n\n this._receiveMessage(wireMessage);\n\n break;\n\n case 2:\n this._receivedMessages[wireMessage.messageIdentifier] = wireMessage;\n this.store(\"Received:\", wireMessage);\n var pubRecMessage = new WireMessage(MESSAGE_TYPE.PUBREC, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n\n this._schedule_message(pubRecMessage);\n\n break;\n\n default:\n throw Error(\"Invaild qos=\" + wireMessage.payloadMessage.qos);\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._receiveMessage = function (wireMessage) {\n if (this.onMessageArrived) {\n this.onMessageArrived(wireMessage.payloadMessage);\n }\n };\n /**\n * Client has connected.\n * @param {reconnect} [boolean] indicate if this was a result of reconnect operation.\n * @param {uri} [string] fully qualified WebSocket URI of the server.\n */\n\n\n ClientImpl.prototype._connected = function (reconnect, uri) {\n // Execute the onConnected callback if there is one.\n if (this.onConnected) this.onConnected(reconnect, uri);\n };\n /**\n * Attempts to reconnect the client to the server.\n * For each reconnect attempt, will double the reconnect interval\n * up to 128 seconds.\n */\n\n\n ClientImpl.prototype._reconnect = function () {\n this._trace(\"Client._reconnect\");\n\n if (!this.connected) {\n this._reconnecting = true;\n this.sendPinger.cancel();\n this.receivePinger.cancel();\n if (this._reconnectInterval < 128) this._reconnectInterval = this._reconnectInterval * 2;\n\n if (this.connectOptions.uris) {\n this.hostIndex = 0;\n\n this._doConnect(this.connectOptions.uris[0]);\n } else {\n this._doConnect(this.uri);\n }\n }\n };\n /**\n * Client has disconnected either at its own request or because the server\n * or network disconnected it. Remove all non-durable state.\n * @param {errorCode} [number] the error number.\n * @param {errorText} [string] the error text.\n * @ignore\n */\n\n\n ClientImpl.prototype._disconnected = function (errorCode, errorText) {\n this._trace(\"Client._disconnected\", errorCode, errorText);\n\n if (errorCode !== undefined && this._reconnecting) {\n //Continue automatic reconnect process\n this._reconnectTimeout = new Timeout(this, this._reconnectInterval, this._reconnect);\n return;\n }\n\n this.sendPinger.cancel();\n this.receivePinger.cancel();\n\n if (this._connectTimeout) {\n this._connectTimeout.cancel();\n\n this._connectTimeout = null;\n } // Clear message buffers.\n\n\n this._msg_queue = [];\n this._buffered_msg_queue = [];\n this._notify_msg_sent = {};\n\n if (this.socket) {\n // Cancel all socket callbacks so that they cannot be driven again by this socket.\n this.socket.onopen = null;\n this.socket.onmessage = null;\n this.socket.onerror = null;\n this.socket.onclose = null;\n if (this.socket.readyState === 1) this.socket.close();\n delete this.socket;\n }\n\n if (this.connectOptions.uris && this.hostIndex < this.connectOptions.uris.length - 1) {\n // Try the next host.\n this.hostIndex++;\n\n this._doConnect(this.connectOptions.uris[this.hostIndex]);\n } else {\n if (errorCode === undefined) {\n errorCode = ERROR.OK.code;\n errorText = format(ERROR.OK);\n } // Run any application callbacks last as they may attempt to reconnect and hence create a new socket.\n\n\n if (this.connected) {\n this.connected = false; // Execute the connectionLostCallback if there is one, and we were connected.\n\n if (this.onConnectionLost) {\n this.onConnectionLost({\n errorCode: errorCode,\n errorMessage: errorText,\n reconnect: this.connectOptions.reconnect,\n uri: this._wsuri\n });\n }\n\n if (errorCode !== ERROR.OK.code && this.connectOptions.reconnect) {\n // Start automatic reconnect process for the very first time since last successful connect.\n this._reconnectInterval = 1;\n\n this._reconnect();\n\n return;\n }\n } else {\n // Otherwise we never had a connection, so indicate that the connect has failed.\n if (this.connectOptions.mqttVersion === 4 && this.connectOptions.mqttVersionExplicit === false) {\n this._trace(\"Failed to connect V4, dropping back to V3\");\n\n this.connectOptions.mqttVersion = 3;\n\n if (this.connectOptions.uris) {\n this.hostIndex = 0;\n\n this._doConnect(this.connectOptions.uris[0]);\n } else {\n this._doConnect(this.uri);\n }\n } else if (this.connectOptions.onFailure) {\n this.connectOptions.onFailure({\n invocationContext: this.connectOptions.invocationContext,\n errorCode: errorCode,\n errorMessage: errorText\n });\n }\n }\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._trace = function () {\n // Pass trace message back to client's callback function\n if (this.traceFunction) {\n var args = Array.prototype.slice.call(arguments);\n\n for (var i in args) {\n if (typeof args[i] !== \"undefined\") args.splice(i, 1, JSON.stringify(args[i]));\n }\n\n var record = args.join(\"\");\n this.traceFunction({\n severity: \"Debug\",\n message: record\n });\n } //buffer style trace\n\n\n if (this._traceBuffer !== null) {\n for (var i = 0, max = arguments.length; i < max; i++) {\n if (this._traceBuffer.length == this._MAX_TRACE_ENTRIES) {\n this._traceBuffer.shift();\n }\n\n if (i === 0) this._traceBuffer.push(arguments[i]);else if (typeof arguments[i] === \"undefined\") this._traceBuffer.push(arguments[i]);else this._traceBuffer.push(\" \" + JSON.stringify(arguments[i]));\n }\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._traceMask = function (traceObject, masked) {\n var traceObjectMasked = {};\n\n for (var attr in traceObject) {\n if (traceObject.hasOwnProperty(attr)) {\n if (attr == masked) traceObjectMasked[attr] = \"******\";else traceObjectMasked[attr] = traceObject[attr];\n }\n }\n\n return traceObjectMasked;\n }; // ------------------------------------------------------------------------\n // Public Programming interface.\n // ------------------------------------------------------------------------\n\n /**\n * The JavaScript application communicates to the server using a {@link Paho.Client} object.\n *

    \n * Most applications will create just one Client object and then call its connect() method,\n * however applications can create more than one Client object if they wish.\n * In this case the combination of host, port and clientId attributes must be different for each Client object.\n *

    \n * The send, subscribe and unsubscribe methods are implemented as asynchronous JavaScript methods\n * (even though the underlying protocol exchange might be synchronous in nature).\n * This means they signal their completion by calling back to the application,\n * via Success or Failure callback functions provided by the application on the method in question.\n * Such callbacks are called at most once per method invocation and do not persist beyond the lifetime\n * of the script that made the invocation.\n *

    \n * In contrast there are some callback functions, most notably onMessageArrived,\n * that are defined on the {@link Paho.Client} object.\n * These may get called multiple times, and aren't directly related to specific method invocations made by the client.\n *\n * @name Paho.Client\n *\n * @constructor\n *\n * @param {string} host - the address of the messaging server, as a fully qualified WebSocket URI, as a DNS name or dotted decimal IP address.\n * @param {number} port - the port number to connect to - only required if host is not a URI\n * @param {string} path - the path on the host to connect to - only used if host is not a URI. Default: '/mqtt'.\n * @param {string} clientId - the Messaging client identifier, between 1 and 23 characters in length.\n *\n * @property {string} host - read only the server's DNS hostname or dotted decimal IP address.\n * @property {number} port - read only the server's port.\n * @property {string} path - read only the server's path.\n * @property {string} clientId - read only used when connecting to the server.\n * @property {function} onConnectionLost - called when a connection has been lost.\n * after a connect() method has succeeded.\n * Establish the call back used when a connection has been lost. The connection may be\n * lost because the client initiates a disconnect or because the server or network\n * cause the client to be disconnected. The disconnect call back may be called without\n * the connectionComplete call back being invoked if, for example the client fails to\n * connect.\n * A single response object parameter is passed to the onConnectionLost callback containing the following fields:\n *

      \n *
    1. errorCode\n *
    2. errorMessage\n *
    \n * @property {function} onMessageDelivered - called when a message has been delivered.\n * All processing that this Client will ever do has been completed. So, for example,\n * in the case of a Qos=2 message sent by this client, the PubComp flow has been received from the server\n * and the message has been removed from persistent storage before this callback is invoked.\n * Parameters passed to the onMessageDelivered callback are:\n *
      \n *
    1. {@link Paho.Message} that was delivered.\n *
    \n * @property {function} onMessageArrived - called when a message has arrived in this Paho.client.\n * Parameters passed to the onMessageArrived callback are:\n *
      \n *
    1. {@link Paho.Message} that has arrived.\n *
    \n * @property {function} onConnected - called when a connection is successfully made to the server.\n * after a connect() method.\n * Parameters passed to the onConnected callback are:\n *
      \n *
    1. reconnect (boolean) - If true, the connection was the result of a reconnect.
    2. \n *
    3. URI (string) - The URI used to connect to the server.
    4. \n *
    \n * @property {boolean} disconnectedPublishing - if set, will enable disconnected publishing in\n * in the event that the connection to the server is lost.\n * @property {number} disconnectedBufferSize - Used to set the maximum number of messages that the disconnected\n * buffer will hold before rejecting new messages. Default size: 5000 messages\n * @property {function} trace - called whenever trace is called. TODO\n */\n\n\n var Client = function Client(host, port, path, clientId) {\n var uri;\n if (typeof host !== \"string\") throw new Error(format(ERROR.INVALID_TYPE, [typeof host, \"host\"]));\n\n if (arguments.length == 2) {\n // host: must be full ws:// uri\n // port: clientId\n clientId = port;\n uri = host;\n var match = uri.match(/^(wss?):\\/\\/((\\[(.+)\\])|([^\\/]+?))(:(\\d+))?(\\/.*)$/);\n\n if (match) {\n host = match[4] || match[2];\n port = parseInt(match[7]);\n path = match[8];\n } else {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [host, \"host\"]));\n }\n } else {\n if (arguments.length == 3) {\n clientId = path;\n path = \"/mqtt\";\n }\n\n if (typeof port !== \"number\" || port < 0) throw new Error(format(ERROR.INVALID_TYPE, [typeof port, \"port\"]));\n if (typeof path !== \"string\") throw new Error(format(ERROR.INVALID_TYPE, [typeof path, \"path\"]));\n var ipv6AddSBracket = host.indexOf(\":\") !== -1 && host.slice(0, 1) !== \"[\" && host.slice(-1) !== \"]\";\n uri = \"ws://\" + (ipv6AddSBracket ? \"[\" + host + \"]\" : host) + \":\" + port + path;\n }\n\n var clientIdLength = 0;\n\n for (var i = 0; i < clientId.length; i++) {\n var charCode = clientId.charCodeAt(i);\n\n if (0xD800 <= charCode && charCode <= 0xDBFF) {\n i++; // Surrogate pair.\n }\n\n clientIdLength++;\n }\n\n if (typeof clientId !== \"string\" || clientIdLength > 65535) throw new Error(format(ERROR.INVALID_ARGUMENT, [clientId, \"clientId\"]));\n var client = new ClientImpl(uri, host, port, path, clientId); //Public Properties\n\n Object.defineProperties(this, {\n \"host\": {\n get: function get() {\n return host;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"port\": {\n get: function get() {\n return port;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"path\": {\n get: function get() {\n return path;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"uri\": {\n get: function get() {\n return uri;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"clientId\": {\n get: function get() {\n return client.clientId;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"onConnected\": {\n get: function get() {\n return client.onConnected;\n },\n set: function set(newOnConnected) {\n if (typeof newOnConnected === \"function\") client.onConnected = newOnConnected;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnConnected, \"onConnected\"]));\n }\n },\n \"disconnectedPublishing\": {\n get: function get() {\n return client.disconnectedPublishing;\n },\n set: function set(newDisconnectedPublishing) {\n client.disconnectedPublishing = newDisconnectedPublishing;\n }\n },\n \"disconnectedBufferSize\": {\n get: function get() {\n return client.disconnectedBufferSize;\n },\n set: function set(newDisconnectedBufferSize) {\n client.disconnectedBufferSize = newDisconnectedBufferSize;\n }\n },\n \"onConnectionLost\": {\n get: function get() {\n return client.onConnectionLost;\n },\n set: function set(newOnConnectionLost) {\n if (typeof newOnConnectionLost === \"function\") client.onConnectionLost = newOnConnectionLost;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnConnectionLost, \"onConnectionLost\"]));\n }\n },\n \"onMessageDelivered\": {\n get: function get() {\n return client.onMessageDelivered;\n },\n set: function set(newOnMessageDelivered) {\n if (typeof newOnMessageDelivered === \"function\") client.onMessageDelivered = newOnMessageDelivered;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnMessageDelivered, \"onMessageDelivered\"]));\n }\n },\n \"onMessageArrived\": {\n get: function get() {\n return client.onMessageArrived;\n },\n set: function set(newOnMessageArrived) {\n if (typeof newOnMessageArrived === \"function\") client.onMessageArrived = newOnMessageArrived;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnMessageArrived, \"onMessageArrived\"]));\n }\n },\n \"trace\": {\n get: function get() {\n return client.traceFunction;\n },\n set: function set(trace) {\n if (typeof trace === \"function\") {\n client.traceFunction = trace;\n } else {\n throw new Error(format(ERROR.INVALID_TYPE, [typeof trace, \"onTrace\"]));\n }\n }\n }\n });\n /**\n * Connect this Messaging client to its server.\n *\n * @name Paho.Client#connect\n * @function\n * @param {object} connectOptions - Attributes used with the connection.\n * @param {number} connectOptions.timeout - If the connect has not succeeded within this\n * number of seconds, it is deemed to have failed.\n * The default is 30 seconds.\n * @param {string} connectOptions.userName - Authentication username for this connection.\n * @param {string} connectOptions.password - Authentication password for this connection.\n * @param {Paho.Message} connectOptions.willMessage - sent by the server when the client\n * disconnects abnormally.\n * @param {number} connectOptions.keepAliveInterval - the server disconnects this client if\n * there is no activity for this number of seconds.\n * The default value of 60 seconds is assumed if not set.\n * @param {boolean} connectOptions.cleanSession - if true(default) the client and server\n * persistent state is deleted on successful connect.\n * @param {boolean} connectOptions.useSSL - if present and true, use an SSL Websocket connection.\n * @param {object} connectOptions.invocationContext - passed to the onSuccess callback or onFailure callback.\n * @param {function} connectOptions.onSuccess - called when the connect acknowledgement\n * has been received from the server.\n * A single response object parameter is passed to the onSuccess callback containing the following fields:\n *
      \n *
    1. invocationContext as passed in to the onSuccess method in the connectOptions.\n *
    \n * @param {function} connectOptions.onFailure - called when the connect request has failed or timed out.\n * A single response object parameter is passed to the onFailure callback containing the following fields:\n *
      \n *
    1. invocationContext as passed in to the onFailure method in the connectOptions.\n *
    2. errorCode a number indicating the nature of the error.\n *
    3. errorMessage text describing the error.\n *
    \n * @param {array} connectOptions.hosts - If present this contains either a set of hostnames or fully qualified\n * WebSocket URIs (ws://iot.eclipse.org:80/ws), that are tried in order in place\n * of the host and port paramater on the construtor. The hosts are tried one at at time in order until\n * one of then succeeds.\n * @param {array} connectOptions.ports - If present the set of ports matching the hosts. If hosts contains URIs, this property\n * is not used.\n * @param {boolean} connectOptions.reconnect - Sets whether the client will automatically attempt to reconnect\n * to the server if the connection is lost.\n *
      \n *
    • If set to false, the client will not attempt to automatically reconnect to the server in the event that the\n * connection is lost.
    • \n *
    • If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server.\n * It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay\n * will double until it is at 2 minutes at which point the delay will stay at 2 minutes.
    • \n *
    \n * @param {number} connectOptions.mqttVersion - The version of MQTT to use to connect to the MQTT Broker.\n *
      \n *
    • 3 - MQTT V3.1
    • \n *
    • 4 - MQTT V3.1.1
    • \n *
    \n * @param {boolean} connectOptions.mqttVersionExplicit - If set to true, will force the connection to use the\n * selected MQTT Version or will fail to connect.\n * @param {array} connectOptions.uris - If present, should contain a list of fully qualified WebSocket uris\n * (e.g. ws://iot.eclipse.org:80/ws), that are tried in order in place of the host and port parameter of the construtor.\n * The uris are tried one at a time in order until one of them succeeds. Do not use this in conjunction with hosts as\n * the hosts array will be converted to uris and will overwrite this property.\n * @throws {InvalidState} If the client is not in disconnected state. The client must have received connectionLost\n * or disconnected before calling connect for a second or subsequent time.\n */\n\n this.connect = function (connectOptions) {\n connectOptions = connectOptions || {};\n validate(connectOptions, {\n timeout: \"number\",\n userName: \"string\",\n password: \"string\",\n willMessage: \"object\",\n keepAliveInterval: \"number\",\n cleanSession: \"boolean\",\n useSSL: \"boolean\",\n invocationContext: \"object\",\n onSuccess: \"function\",\n onFailure: \"function\",\n hosts: \"object\",\n ports: \"object\",\n reconnect: \"boolean\",\n mqttVersion: \"number\",\n mqttVersionExplicit: \"boolean\",\n uris: \"object\"\n }); // If no keep alive interval is set, assume 60 seconds.\n\n if (connectOptions.keepAliveInterval === undefined) connectOptions.keepAliveInterval = 60;\n\n if (connectOptions.mqttVersion > 4 || connectOptions.mqttVersion < 3) {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.mqttVersion, \"connectOptions.mqttVersion\"]));\n }\n\n if (connectOptions.mqttVersion === undefined) {\n connectOptions.mqttVersionExplicit = false;\n connectOptions.mqttVersion = 4;\n } else {\n connectOptions.mqttVersionExplicit = true;\n } //Check that if password is set, so is username\n\n\n if (connectOptions.password !== undefined && connectOptions.userName === undefined) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.password, \"connectOptions.password\"]));\n\n if (connectOptions.willMessage) {\n if (!(connectOptions.willMessage instanceof Message)) throw new Error(format(ERROR.INVALID_TYPE, [connectOptions.willMessage, \"connectOptions.willMessage\"])); // The will message must have a payload that can be represented as a string.\n // Cause the willMessage to throw an exception if this is not the case.\n\n connectOptions.willMessage.stringPayload = null;\n if (typeof connectOptions.willMessage.destinationName === \"undefined\") throw new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.willMessage.destinationName, \"connectOptions.willMessage.destinationName\"]));\n }\n\n if (typeof connectOptions.cleanSession === \"undefined\") connectOptions.cleanSession = true;\n\n if (connectOptions.hosts) {\n if (!(connectOptions.hosts instanceof Array)) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts, \"connectOptions.hosts\"]));\n if (connectOptions.hosts.length < 1) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts, \"connectOptions.hosts\"]));\n var usingURIs = false;\n\n for (var i = 0; i < connectOptions.hosts.length; i++) {\n if (typeof connectOptions.hosts[i] !== \"string\") throw new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.hosts[i], \"connectOptions.hosts[\" + i + \"]\"]));\n\n if (/^(wss?):\\/\\/((\\[(.+)\\])|([^\\/]+?))(:(\\d+))?(\\/.*)$/.test(connectOptions.hosts[i])) {\n if (i === 0) {\n usingURIs = true;\n } else if (!usingURIs) {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts[i], \"connectOptions.hosts[\" + i + \"]\"]));\n }\n } else if (usingURIs) {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts[i], \"connectOptions.hosts[\" + i + \"]\"]));\n }\n }\n\n if (!usingURIs) {\n if (!connectOptions.ports) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.ports, \"connectOptions.ports\"]));\n if (!(connectOptions.ports instanceof Array)) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.ports, \"connectOptions.ports\"]));\n if (connectOptions.hosts.length !== connectOptions.ports.length) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.ports, \"connectOptions.ports\"]));\n connectOptions.uris = [];\n\n for (var i = 0; i < connectOptions.hosts.length; i++) {\n if (typeof connectOptions.ports[i] !== \"number\" || connectOptions.ports[i] < 0) throw new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.ports[i], \"connectOptions.ports[\" + i + \"]\"]));\n var host = connectOptions.hosts[i];\n var port = connectOptions.ports[i];\n var ipv6 = host.indexOf(\":\") !== -1;\n uri = \"ws://\" + (ipv6 ? \"[\" + host + \"]\" : host) + \":\" + port + path;\n connectOptions.uris.push(uri);\n }\n } else {\n connectOptions.uris = connectOptions.hosts;\n }\n }\n\n client.connect(connectOptions);\n };\n /**\n * Subscribe for messages, request receipt of a copy of messages sent to the destinations described by the filter.\n *\n * @name Paho.Client#subscribe\n * @function\n * @param {string} filter describing the destinations to receive messages from.\n *
    \n * @param {object} subscribeOptions - used to control the subscription\n *\n * @param {number} subscribeOptions.qos - the maximum qos of any publications sent\n * as a result of making this subscription.\n * @param {object} subscribeOptions.invocationContext - passed to the onSuccess callback\n * or onFailure callback.\n * @param {function} subscribeOptions.onSuccess - called when the subscribe acknowledgement\n * has been received from the server.\n * A single response object parameter is passed to the onSuccess callback containing the following fields:\n *
      \n *
    1. invocationContext if set in the subscribeOptions.\n *
    \n * @param {function} subscribeOptions.onFailure - called when the subscribe request has failed or timed out.\n * A single response object parameter is passed to the onFailure callback containing the following fields:\n *
      \n *
    1. invocationContext - if set in the subscribeOptions.\n *
    2. errorCode - a number indicating the nature of the error.\n *
    3. errorMessage - text describing the error.\n *
    \n * @param {number} subscribeOptions.timeout - which, if present, determines the number of\n * seconds after which the onFailure calback is called.\n * The presence of a timeout does not prevent the onSuccess\n * callback from being called when the subscribe completes.\n * @throws {InvalidState} if the client is not in connected state.\n */\n\n\n this.subscribe = function (filter, subscribeOptions) {\n if (typeof filter !== \"string\" && filter.constructor !== Array) throw new Error(\"Invalid argument:\" + filter);\n subscribeOptions = subscribeOptions || {};\n validate(subscribeOptions, {\n qos: \"number\",\n invocationContext: \"object\",\n onSuccess: \"function\",\n onFailure: \"function\",\n timeout: \"number\"\n });\n if (subscribeOptions.timeout && !subscribeOptions.onFailure) throw new Error(\"subscribeOptions.timeout specified with no onFailure callback.\");\n if (typeof subscribeOptions.qos !== \"undefined\" && !(subscribeOptions.qos === 0 || subscribeOptions.qos === 1 || subscribeOptions.qos === 2)) throw new Error(format(ERROR.INVALID_ARGUMENT, [subscribeOptions.qos, \"subscribeOptions.qos\"]));\n client.subscribe(filter, subscribeOptions);\n };\n /**\n * Unsubscribe for messages, stop receiving messages sent to destinations described by the filter.\n *\n * @name Paho.Client#unsubscribe\n * @function\n * @param {string} filter - describing the destinations to receive messages from.\n * @param {object} unsubscribeOptions - used to control the subscription\n * @param {object} unsubscribeOptions.invocationContext - passed to the onSuccess callback\n \t\t\t\t\t\t\t\t\t or onFailure callback.\n * @param {function} unsubscribeOptions.onSuccess - called when the unsubscribe acknowledgement has been received from the server.\n * A single response object parameter is passed to the\n * onSuccess callback containing the following fields:\n *
      \n *
    1. invocationContext - if set in the unsubscribeOptions.\n *
    \n * @param {function} unsubscribeOptions.onFailure called when the unsubscribe request has failed or timed out.\n * A single response object parameter is passed to the onFailure callback containing the following fields:\n *
      \n *
    1. invocationContext - if set in the unsubscribeOptions.\n *
    2. errorCode - a number indicating the nature of the error.\n *
    3. errorMessage - text describing the error.\n *
    \n * @param {number} unsubscribeOptions.timeout - which, if present, determines the number of seconds\n * after which the onFailure callback is called. The presence of\n * a timeout does not prevent the onSuccess callback from being\n * called when the unsubscribe completes\n * @throws {InvalidState} if the client is not in connected state.\n */\n\n\n this.unsubscribe = function (filter, unsubscribeOptions) {\n if (typeof filter !== \"string\" && filter.constructor !== Array) throw new Error(\"Invalid argument:\" + filter);\n unsubscribeOptions = unsubscribeOptions || {};\n validate(unsubscribeOptions, {\n invocationContext: \"object\",\n onSuccess: \"function\",\n onFailure: \"function\",\n timeout: \"number\"\n });\n if (unsubscribeOptions.timeout && !unsubscribeOptions.onFailure) throw new Error(\"unsubscribeOptions.timeout specified with no onFailure callback.\");\n client.unsubscribe(filter, unsubscribeOptions);\n };\n /**\n * Send a message to the consumers of the destination in the Message.\n *\n * @name Paho.Client#send\n * @function\n * @param {string|Paho.Message} topic - mandatory The name of the destination to which the message is to be sent.\n * \t\t\t\t\t - If it is the only parameter, used as Paho.Message object.\n * @param {String|ArrayBuffer} payload - The message data to be sent.\n * @param {number} qos The Quality of Service used to deliver the message.\n * \t\t
    \n * \t\t\t
    0 Best effort (default).\n * \t\t\t
    1 At least once.\n * \t\t\t
    2 Exactly once.\n * \t\t
    \n * @param {Boolean} retained If true, the message is to be retained by the server and delivered\n * to both current and future subscriptions.\n * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n * A received message has the retained boolean set to true if the message was published\n * with the retained boolean set to true\n * and the subscrption was made after the message has been published.\n * @throws {InvalidState} if the client is not connected.\n */\n\n\n this.send = function (topic, payload, qos, retained) {\n var message;\n\n if (arguments.length === 0) {\n throw new Error(\"Invalid argument.\" + \"length\");\n } else if (arguments.length == 1) {\n if (!(topic instanceof Message) && typeof topic !== \"string\") throw new Error(\"Invalid argument:\" + typeof topic);\n message = topic;\n if (typeof message.destinationName === \"undefined\") throw new Error(format(ERROR.INVALID_ARGUMENT, [message.destinationName, \"Message.destinationName\"]));\n client.send(message);\n } else {\n //parameter checking in Message object\n message = new Message(payload);\n message.destinationName = topic;\n if (arguments.length >= 3) message.qos = qos;\n if (arguments.length >= 4) message.retained = retained;\n client.send(message);\n }\n };\n /**\n * Publish a message to the consumers of the destination in the Message.\n * Synonym for Paho.Mqtt.Client#send\n *\n * @name Paho.Client#publish\n * @function\n * @param {string|Paho.Message} topic - mandatory The name of the topic to which the message is to be published.\n * \t\t\t\t\t - If it is the only parameter, used as Paho.Message object.\n * @param {String|ArrayBuffer} payload - The message data to be published.\n * @param {number} qos The Quality of Service used to deliver the message.\n * \t\t
    \n * \t\t\t
    0 Best effort (default).\n * \t\t\t
    1 At least once.\n * \t\t\t
    2 Exactly once.\n * \t\t
    \n * @param {Boolean} retained If true, the message is to be retained by the server and delivered\n * to both current and future subscriptions.\n * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n * A received message has the retained boolean set to true if the message was published\n * with the retained boolean set to true\n * and the subscrption was made after the message has been published.\n * @throws {InvalidState} if the client is not connected.\n */\n\n\n this.publish = function (topic, payload, qos, retained) {\n var message;\n\n if (arguments.length === 0) {\n throw new Error(\"Invalid argument.\" + \"length\");\n } else if (arguments.length == 1) {\n if (!(topic instanceof Message) && typeof topic !== \"string\") throw new Error(\"Invalid argument:\" + typeof topic);\n message = topic;\n if (typeof message.destinationName === \"undefined\") throw new Error(format(ERROR.INVALID_ARGUMENT, [message.destinationName, \"Message.destinationName\"]));\n client.send(message);\n } else {\n //parameter checking in Message object\n message = new Message(payload);\n message.destinationName = topic;\n if (arguments.length >= 3) message.qos = qos;\n if (arguments.length >= 4) message.retained = retained;\n client.send(message);\n }\n };\n /**\n * Normal disconnect of this Messaging client from its server.\n *\n * @name Paho.Client#disconnect\n * @function\n * @throws {InvalidState} if the client is already disconnected.\n */\n\n\n this.disconnect = function () {\n client.disconnect();\n };\n /**\n * Get the contents of the trace log.\n *\n * @name Paho.Client#getTraceLog\n * @function\n * @return {Object[]} tracebuffer containing the time ordered trace records.\n */\n\n\n this.getTraceLog = function () {\n return client.getTraceLog();\n };\n /**\n * Start tracing.\n *\n * @name Paho.Client#startTrace\n * @function\n */\n\n\n this.startTrace = function () {\n client.startTrace();\n };\n /**\n * Stop tracing.\n *\n * @name Paho.Client#stopTrace\n * @function\n */\n\n\n this.stopTrace = function () {\n client.stopTrace();\n };\n\n this.isConnected = function () {\n return client.connected;\n };\n };\n /**\n * An application message, sent or received.\n *

    \n * All attributes may be null, which implies the default values.\n *\n * @name Paho.Message\n * @constructor\n * @param {String|ArrayBuffer} payload The message data to be sent.\n *

    \n * @property {string} payloadString read only The payload as a string if the payload consists of valid UTF-8 characters.\n * @property {ArrayBuffer} payloadBytes read only The payload as an ArrayBuffer.\n *

    \n * @property {string} destinationName mandatory The name of the destination to which the message is to be sent\n * (for messages about to be sent) or the name of the destination from which the message has been received.\n * (for messages received by the onMessage function).\n *

    \n * @property {number} qos The Quality of Service used to deliver the message.\n *

    \n *
    0 Best effort (default).\n *
    1 At least once.\n *
    2 Exactly once.\n *
    \n *

    \n * @property {Boolean} retained If true, the message is to be retained by the server and delivered\n * to both current and future subscriptions.\n * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n * A received message has the retained boolean set to true if the message was published\n * with the retained boolean set to true\n * and the subscrption was made after the message has been published.\n *

    \n * @property {Boolean} duplicate read only If true, this message might be a duplicate of one which has already been received.\n * This is only set on messages received from the server.\n *\n */\n\n\n var Message = function Message(newPayload) {\n var payload;\n\n if (typeof newPayload === \"string\" || newPayload instanceof ArrayBuffer || ArrayBuffer.isView(newPayload) && !(newPayload instanceof DataView)) {\n payload = newPayload;\n } else {\n throw format(ERROR.INVALID_ARGUMENT, [newPayload, \"newPayload\"]);\n }\n\n var destinationName;\n var qos = 0;\n var retained = false;\n var duplicate = false;\n Object.defineProperties(this, {\n \"payloadString\": {\n enumerable: true,\n get: function get() {\n if (typeof payload === \"string\") return payload;else return parseUTF8(payload, 0, payload.length);\n }\n },\n \"payloadBytes\": {\n enumerable: true,\n get: function get() {\n if (typeof payload === \"string\") {\n var buffer = new ArrayBuffer(UTF8Length(payload));\n var byteStream = new Uint8Array(buffer);\n stringToUTF8(payload, byteStream, 0);\n return byteStream;\n } else {\n return payload;\n }\n }\n },\n \"destinationName\": {\n enumerable: true,\n get: function get() {\n return destinationName;\n },\n set: function set(newDestinationName) {\n if (typeof newDestinationName === \"string\") destinationName = newDestinationName;else throw new Error(format(ERROR.INVALID_ARGUMENT, [newDestinationName, \"newDestinationName\"]));\n }\n },\n \"qos\": {\n enumerable: true,\n get: function get() {\n return qos;\n },\n set: function set(newQos) {\n if (newQos === 0 || newQos === 1 || newQos === 2) qos = newQos;else throw new Error(\"Invalid argument:\" + newQos);\n }\n },\n \"retained\": {\n enumerable: true,\n get: function get() {\n return retained;\n },\n set: function set(newRetained) {\n if (typeof newRetained === \"boolean\") retained = newRetained;else throw new Error(format(ERROR.INVALID_ARGUMENT, [newRetained, \"newRetained\"]));\n }\n },\n \"topic\": {\n enumerable: true,\n get: function get() {\n return destinationName;\n },\n set: function set(newTopic) {\n destinationName = newTopic;\n }\n },\n \"duplicate\": {\n enumerable: true,\n get: function get() {\n return duplicate;\n },\n set: function set(newDuplicate) {\n duplicate = newDuplicate;\n }\n }\n });\n }; // Module contents.\n\n\n return {\n Client: Client,\n Message: Message\n }; // eslint-disable-next-line no-nested-ternary\n }(typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n\n return PahoMQTT;\n});","var cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = 0;\n outerStyle.left = 0;\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n\n return cached;\n}","/**\n * Easy to set element style, return previous style\n * IE browser compatible(IE browser doesn't merge overflow style, need to set it separately)\n * https://github.com/ant-design/ant-design/issues/19393\n *\n */\nfunction setStyle(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!style) {\n return {};\n }\n\n var _options$element = options.element,\n element = _options$element === void 0 ? document.body : _options$element;\n var oldStyle = {};\n var styleKeys = Object.keys(style); // IE browser compatible\n\n styleKeys.forEach(function (key) {\n oldStyle[key] = element.style[key];\n });\n styleKeys.forEach(function (key) {\n element.style[key] = style[key];\n });\n return oldStyle;\n}\n\nexport default setStyle;","import getScrollBarSize from './getScrollBarSize';\nimport setStyle from './setStyle';\n\nfunction isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}\n\nvar cacheStyle = {};\nexport default (function (close) {\n if (!isBodyOverflowing() && !close) {\n return;\n } // https://github.com/ant-design/ant-design/issues/19729\n\n\n var scrollingEffectClassName = 'ant-scrolling-effect';\n var scrollingEffectClassNameReg = new RegExp(\"\".concat(scrollingEffectClassName), 'g');\n var bodyClassName = document.body.className;\n\n if (close) {\n if (!scrollingEffectClassNameReg.test(bodyClassName)) return;\n setStyle(cacheStyle);\n cacheStyle = {};\n document.body.className = bodyClassName.replace(scrollingEffectClassNameReg, '').trim();\n return;\n }\n\n var scrollBarSize = getScrollBarSize();\n\n if (scrollBarSize) {\n cacheStyle = setStyle({\n position: 'relative',\n width: \"calc(100% - \".concat(scrollBarSize, \"px)\")\n });\n\n if (!scrollingEffectClassNameReg.test(bodyClassName)) {\n var addClassName = \"\".concat(bodyClassName, \" \").concat(scrollingEffectClassName);\n document.body.className = addClassName.trim();\n }\n }\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport getScrollBarSize from '../getScrollBarSize';\nimport setStyle from '../setStyle';\nvar locks = [];\nvar scrollingEffectClassName = 'ant-scrolling-effect';\nvar scrollingEffectClassNameReg = new RegExp(\"\".concat(scrollingEffectClassName), 'g');\nvar uuid = 0; // https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\n\nvar cacheStyle = new Map();\n\nvar ScrollLocker = function ScrollLocker(options) {\n var _this = this;\n\n _classCallCheck(this, ScrollLocker);\n\n this.getContainer = function () {\n var _this$options;\n\n return (_this$options = _this.options) === null || _this$options === void 0 ? void 0 : _this$options.container;\n }; // if options change...\n\n\n this.reLock = function (options) {\n var findLock = locks.find(function (_ref) {\n var target = _ref.target;\n return target === _this.lockTarget;\n });\n\n if (findLock) {\n _this.unLock();\n }\n\n _this.options = options;\n\n if (findLock) {\n findLock.options = options;\n\n _this.lock();\n }\n };\n\n this.lock = function () {\n var _this$options3; // If lockTarget exist return\n\n\n if (locks.some(function (_ref2) {\n var target = _ref2.target;\n return target === _this.lockTarget;\n })) {\n return;\n } // If same container effect, return\n\n\n if (locks.some(function (_ref3) {\n var _this$options2;\n\n var options = _ref3.options;\n return (options === null || options === void 0 ? void 0 : options.container) === ((_this$options2 = _this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.container);\n })) {\n locks = [].concat(_toConsumableArray(locks), [{\n target: _this.lockTarget,\n options: _this.options\n }]);\n return;\n }\n\n var scrollBarSize = 0;\n var container = ((_this$options3 = _this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.container) || document.body;\n\n if (container === document.body && window.innerWidth - document.documentElement.clientWidth > 0 || container.scrollHeight > container.clientHeight) {\n scrollBarSize = getScrollBarSize();\n }\n\n var containerClassName = container.className;\n\n if (locks.filter(function (_ref4) {\n var _this$options4;\n\n var options = _ref4.options;\n return (options === null || options === void 0 ? void 0 : options.container) === ((_this$options4 = _this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.container);\n }).length === 0) {\n cacheStyle.set(container, setStyle({\n width: \"calc(100% - \".concat(scrollBarSize, \"px)\"),\n overflow: 'hidden',\n overflowX: 'hidden',\n overflowY: 'hidden'\n }, {\n element: container\n }));\n } // https://github.com/ant-design/ant-design/issues/19729\n\n\n if (!scrollingEffectClassNameReg.test(containerClassName)) {\n var addClassName = \"\".concat(containerClassName, \" \").concat(scrollingEffectClassName);\n container.className = addClassName.trim();\n }\n\n locks = [].concat(_toConsumableArray(locks), [{\n target: _this.lockTarget,\n options: _this.options\n }]);\n };\n\n this.unLock = function () {\n var _this$options5;\n\n var findLock = locks.find(function (_ref5) {\n var target = _ref5.target;\n return target === _this.lockTarget;\n });\n locks = locks.filter(function (_ref6) {\n var target = _ref6.target;\n return target !== _this.lockTarget;\n });\n\n if (!findLock || locks.some(function (_ref7) {\n var _findLock$options;\n\n var options = _ref7.options;\n return (options === null || options === void 0 ? void 0 : options.container) === ((_findLock$options = findLock.options) === null || _findLock$options === void 0 ? void 0 : _findLock$options.container);\n })) {\n return;\n } // Remove Effect\n\n\n var container = ((_this$options5 = _this.options) === null || _this$options5 === void 0 ? void 0 : _this$options5.container) || document.body;\n var containerClassName = container.className;\n if (!scrollingEffectClassNameReg.test(containerClassName)) return;\n setStyle(cacheStyle.get(container), {\n element: container\n });\n cacheStyle.delete(container);\n container.className = container.className.replace(scrollingEffectClassNameReg, '').trim();\n }; // eslint-disable-next-line no-plusplus\n\n\n this.lockTarget = uuid++;\n this.options = options;\n};\n\nexport { ScrollLocker as default };","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n/* eslint-disable no-underscore-dangle,react/require-default-props */\n\n\nimport * as React from 'react';\nimport raf from './raf';\nimport Portal from './Portal';\nimport canUseDom from './Dom/canUseDom';\nimport switchScrollingEffect from './switchScrollingEffect';\nimport setStyle from './setStyle';\nimport ScrollLocker from './Dom/scrollLocker';\nvar openCount = 0;\nvar supportDom = canUseDom();\n/** @private Test usage only */\n\nexport function getOpenCount() {\n return process.env.NODE_ENV === 'test' ? openCount : 0;\n} // https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\n\nvar cacheOverflow = {};\n\nvar getParent = function getParent(getContainer) {\n if (!supportDom) {\n return null;\n }\n\n if (getContainer) {\n if (typeof getContainer === 'string') {\n return document.querySelectorAll(getContainer)[0];\n }\n\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n\n if (_typeof(getContainer) === 'object' && getContainer instanceof window.HTMLElement) {\n return getContainer;\n }\n }\n\n return document.body;\n};\n\nvar PortalWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(PortalWrapper, _React$Component);\n\n var _super = _createSuper(PortalWrapper);\n\n function PortalWrapper(props) {\n var _this;\n\n _classCallCheck(this, PortalWrapper);\n\n _this = _super.call(this, props);\n _this.componentRef = React.createRef();\n\n _this.updateScrollLocker = function (prevProps) {\n var _ref = prevProps || {},\n prevVisible = _ref.visible;\n\n var _this$props = _this.props,\n getContainer = _this$props.getContainer,\n visible = _this$props.visible;\n\n if (visible && visible !== prevVisible && supportDom && getParent(getContainer) !== _this.scrollLocker.getContainer()) {\n _this.scrollLocker.reLock({\n container: getParent(getContainer)\n });\n }\n };\n\n _this.updateOpenCount = function (prevProps) {\n var _ref2 = prevProps || {},\n prevVisible = _ref2.visible,\n prevGetContainer = _ref2.getContainer;\n\n var _this$props2 = _this.props,\n visible = _this$props2.visible,\n getContainer = _this$props2.getContainer; // Update count\n\n if (visible !== prevVisible && supportDom && getParent(getContainer) === document.body) {\n if (visible && !prevVisible) {\n openCount += 1;\n } else if (prevProps) {\n openCount -= 1;\n }\n } // Clean up container if needed\n\n\n var getContainerIsFunc = typeof getContainer === 'function' && typeof prevGetContainer === 'function';\n\n if (getContainerIsFunc ? getContainer.toString() !== prevGetContainer.toString() : getContainer !== prevGetContainer) {\n _this.removeCurrentContainer();\n }\n };\n\n _this.attachToParent = function () {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (force || _this.container && !_this.container.parentNode) {\n var parent = getParent(_this.props.getContainer);\n\n if (parent) {\n parent.appendChild(_this.container);\n return true;\n }\n\n return false;\n }\n\n return true;\n };\n\n _this.getContainer = function () {\n if (!supportDom) {\n return null;\n }\n\n if (!_this.container) {\n _this.container = document.createElement('div');\n\n _this.attachToParent(true);\n }\n\n _this.setWrapperClassName();\n\n return _this.container;\n };\n\n _this.setWrapperClassName = function () {\n var wrapperClassName = _this.props.wrapperClassName;\n\n if (_this.container && wrapperClassName && wrapperClassName !== _this.container.className) {\n _this.container.className = wrapperClassName;\n }\n };\n\n _this.removeCurrentContainer = function () {\n var _this$container, _this$container$paren; // Portal will remove from `parentNode`.\n // Let's handle this again to avoid refactor issue.\n\n\n (_this$container = _this.container) === null || _this$container === void 0 ? void 0 : (_this$container$paren = _this$container.parentNode) === null || _this$container$paren === void 0 ? void 0 : _this$container$paren.removeChild(_this.container);\n };\n /**\n * Enhance ./switchScrollingEffect\n * 1. Simulate document body scroll bar with\n * 2. Record body has overflow style and recover when all of PortalWrapper invisible\n * 3. Disable body scroll when PortalWrapper has open\n *\n * @memberof PortalWrapper\n */\n\n\n _this.switchScrollingEffect = function () {\n if (openCount === 1 && !Object.keys(cacheOverflow).length) {\n switchScrollingEffect(); // Must be set after switchScrollingEffect\n\n cacheOverflow = setStyle({\n overflow: 'hidden',\n overflowX: 'hidden',\n overflowY: 'hidden'\n });\n } else if (!openCount) {\n setStyle(cacheOverflow);\n cacheOverflow = {};\n switchScrollingEffect(true);\n }\n };\n\n _this.scrollLocker = new ScrollLocker({\n container: getParent(props.getContainer)\n });\n return _this;\n }\n\n _createClass(PortalWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.updateOpenCount();\n\n if (!this.attachToParent()) {\n this.rafId = raf(function () {\n _this2.forceUpdate();\n });\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n this.updateOpenCount(prevProps);\n this.updateScrollLocker(prevProps);\n this.setWrapperClassName();\n this.attachToParent();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$props3 = this.props,\n visible = _this$props3.visible,\n getContainer = _this$props3.getContainer;\n\n if (supportDom && getParent(getContainer) === document.body) {\n // 离开时不会 render, 导到离开时数值不变,改用 func 。。\n openCount = visible && openCount ? openCount - 1 : openCount;\n }\n\n this.removeCurrentContainer();\n raf.cancel(this.rafId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n forceRender = _this$props4.forceRender,\n visible = _this$props4.visible;\n var portal = null;\n var childProps = {\n getOpenCount: function getOpenCount() {\n return openCount;\n },\n getContainer: this.getContainer,\n switchScrollingEffect: this.switchScrollingEffect,\n scrollLocker: this.scrollLocker\n };\n\n if (forceRender || visible || this.componentRef.current) {\n portal = /*#__PURE__*/React.createElement(Portal, {\n getContainer: this.getContainer,\n ref: this.componentRef\n }, children(childProps));\n }\n\n return portal;\n }\n }]);\n\n return PortalWrapper;\n}(React.Component);\n\nexport default PortalWrapper;","export function dataToArray(vars) {\n if (Array.isArray(vars)) {\n return vars;\n }\n\n return [vars];\n}\nvar transitionEndObject = {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend'\n};\nexport var transitionStr = Object.keys(transitionEndObject).filter(function (key) {\n if (typeof document === 'undefined') {\n return false;\n }\n\n var html = document.getElementsByTagName('html')[0];\n return key in (html ? html.style : {});\n})[0];\nexport var transitionEnd = transitionEndObject[transitionStr];\nexport function addEventListener(target, eventType, callback, options) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, options);\n } else if (target.attachEvent) {\n // tslint:disable-line\n target.attachEvent(\"on\".concat(eventType), callback); // tslint:disable-line\n }\n}\nexport function removeEventListener(target, eventType, callback, options) {\n if (target.removeEventListener) {\n target.removeEventListener(eventType, callback, options);\n } else if (target.attachEvent) {\n // tslint:disable-line\n target.detachEvent(\"on\".concat(eventType), callback); // tslint:disable-line\n }\n}\nexport function transformArguments(arg, cb) {\n var result = typeof arg === 'function' ? arg(cb) : arg;\n\n if (Array.isArray(result)) {\n if (result.length === 2) {\n return result;\n }\n\n return [result[0], result[1]];\n }\n\n return [result];\n}\nexport var isNumeric = function isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n};\nexport var windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport var getTouchParentScroll = function getTouchParentScroll(root, currentTarget, differX, differY) {\n if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {\n return false;\n } // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;\n\n\n if (currentTarget === root.parentNode) {\n return true;\n }\n\n var isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);\n var isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);\n var scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;\n var scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;\n var style = document.defaultView.getComputedStyle(currentTarget);\n var overflowY = style.overflowY === 'auto' || style.overflowY === 'scroll';\n var overflowX = style.overflowX === 'auto' || style.overflowX === 'scroll';\n var y = scrollY && overflowY;\n var x = scrollX && overflowX;\n\n if (isY && (!y || y && (currentTarget.scrollTop >= scrollY && differY < 0 || currentTarget.scrollTop <= 0 && differY > 0)) || isX && (!x || x && (currentTarget.scrollLeft >= scrollX && differX < 0 || currentTarget.scrollLeft <= 0 && differX > 0))) {\n return getTouchParentScroll(root, currentTarget.parentNode, differX, differY);\n }\n\n return false;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport classnames from 'classnames';\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { addEventListener, dataToArray, getTouchParentScroll, isNumeric, removeEventListener, transformArguments, transitionEnd, transitionStr, windowIsUndefined } from './utils';\nvar currentDrawer = {};\n\nvar DrawerChild = /*#__PURE__*/function (_React$Component) {\n _inherits(DrawerChild, _React$Component);\n\n var _super = _createSuper(DrawerChild);\n\n function DrawerChild(props) {\n var _this;\n\n _classCallCheck(this, DrawerChild);\n\n _this = _super.call(this, props);\n\n _this.domFocus = function () {\n if (_this.dom) {\n _this.dom.focus();\n }\n };\n\n _this.removeStartHandler = function (e) {\n if (e.touches.length > 1) {\n return;\n }\n\n _this.startPos = {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY\n };\n };\n\n _this.removeMoveHandler = function (e) {\n if (e.changedTouches.length > 1) {\n return;\n }\n\n var currentTarget = e.currentTarget;\n var differX = e.changedTouches[0].clientX - _this.startPos.x;\n var differY = e.changedTouches[0].clientY - _this.startPos.y;\n\n if ((currentTarget === _this.maskDom || currentTarget === _this.handlerDom || currentTarget === _this.contentDom && getTouchParentScroll(currentTarget, e.target, differX, differY)) && e.cancelable) {\n e.preventDefault();\n }\n };\n\n _this.transitionEnd = function (e) {\n var dom = e.target;\n removeEventListener(dom, transitionEnd, _this.transitionEnd);\n dom.style.transition = '';\n };\n\n _this.onKeyDown = function (e) {\n if (e.keyCode === KeyCode.ESC) {\n var onClose = _this.props.onClose;\n e.stopPropagation();\n\n if (onClose) {\n onClose(e);\n }\n }\n };\n\n _this.onWrapperTransitionEnd = function (e) {\n var _this$props = _this.props,\n open = _this$props.open,\n afterVisibleChange = _this$props.afterVisibleChange;\n\n if (e.target === _this.contentWrapper && e.propertyName.match(/transform$/)) {\n _this.dom.style.transition = '';\n\n if (!open && _this.getCurrentDrawerSome()) {\n document.body.style.overflowX = '';\n\n if (_this.maskDom) {\n _this.maskDom.style.left = '';\n _this.maskDom.style.width = '';\n }\n }\n\n if (afterVisibleChange) {\n afterVisibleChange(!!open);\n }\n }\n };\n\n _this.openLevelTransition = function () {\n var _this$props2 = _this.props,\n open = _this$props2.open,\n width = _this$props2.width,\n height = _this$props2.height;\n\n var _this$getHorizontalBo = _this.getHorizontalBoolAndPlacementName(),\n isHorizontal = _this$getHorizontalBo.isHorizontal,\n placementName = _this$getHorizontalBo.placementName;\n\n var contentValue = _this.contentDom ? _this.contentDom.getBoundingClientRect()[isHorizontal ? 'width' : 'height'] : 0;\n var value = (isHorizontal ? width : height) || contentValue;\n\n _this.setLevelAndScrolling(open, placementName, value);\n };\n\n _this.setLevelTransform = function (open, placementName, value, right) {\n var _this$props3 = _this.props,\n placement = _this$props3.placement,\n levelMove = _this$props3.levelMove,\n duration = _this$props3.duration,\n ease = _this$props3.ease,\n showMask = _this$props3.showMask; // router 切换时可能会导至页面失去滚动条,所以需要时时获取。\n\n _this.levelDom.forEach(function (dom) {\n dom.style.transition = \"transform \".concat(duration, \" \").concat(ease);\n addEventListener(dom, transitionEnd, _this.transitionEnd);\n var levelValue = open ? value : 0;\n\n if (levelMove) {\n var $levelMove = transformArguments(levelMove, {\n target: dom,\n open: open\n });\n levelValue = open ? $levelMove[0] : $levelMove[1] || 0;\n }\n\n var $value = typeof levelValue === 'number' ? \"\".concat(levelValue, \"px\") : levelValue;\n var placementPos = placement === 'left' || placement === 'top' ? $value : \"-\".concat($value);\n placementPos = showMask && placement === 'right' && right ? \"calc(\".concat(placementPos, \" + \").concat(right, \"px)\") : placementPos;\n dom.style.transform = levelValue ? \"\".concat(placementName, \"(\").concat(placementPos, \")\") : '';\n });\n };\n\n _this.setLevelAndScrolling = function (open, placementName, value) {\n var onChange = _this.props.onChange;\n\n if (!windowIsUndefined) {\n var right = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth ? getScrollBarSize(true) : 0;\n\n _this.setLevelTransform(open, placementName, value, right);\n\n _this.toggleScrollingToDrawerAndBody(right);\n }\n\n if (onChange) {\n onChange(open);\n }\n };\n\n _this.toggleScrollingToDrawerAndBody = function (right) {\n var _this$props4 = _this.props,\n getContainer = _this$props4.getContainer,\n showMask = _this$props4.showMask,\n open = _this$props4.open;\n var container = getContainer && getContainer(); // 处理 body 滚动\n\n if (container && container.parentNode === document.body && showMask) {\n var eventArray = ['touchstart'];\n var domArray = [document.body, _this.maskDom, _this.handlerDom, _this.contentDom];\n\n if (open && document.body.style.overflow !== 'hidden') {\n if (right) {\n _this.addScrollingEffect(right);\n }\n\n document.body.style.touchAction = 'none'; // 手机禁滚\n\n domArray.forEach(function (item, i) {\n if (!item) {\n return;\n }\n\n addEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n });\n } else if (_this.getCurrentDrawerSome()) {\n document.body.style.touchAction = '';\n\n if (right) {\n _this.remScrollingEffect(right);\n } // 恢复事件\n\n\n domArray.forEach(function (item, i) {\n if (!item) {\n return;\n }\n\n removeEventListener(item, eventArray[i] || 'touchmove', i ? _this.removeMoveHandler : _this.removeStartHandler, _this.passive);\n });\n }\n }\n };\n\n _this.addScrollingEffect = function (right) {\n var _this$props5 = _this.props,\n placement = _this$props5.placement,\n duration = _this$props5.duration,\n ease = _this$props5.ease;\n var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n _this.dom.style.transition = 'none';\n\n switch (placement) {\n case 'right':\n _this.dom.style.transform = \"translateX(-\".concat(right, \"px)\");\n break;\n\n case 'top':\n case 'bottom':\n _this.dom.style.width = \"calc(100% - \".concat(right, \"px)\");\n _this.dom.style.transform = 'translateZ(0)';\n break;\n\n default:\n break;\n }\n\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n if (_this.dom) {\n _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(widthTransition);\n _this.dom.style.width = '';\n _this.dom.style.transform = '';\n }\n });\n };\n\n _this.remScrollingEffect = function (right) {\n var _this$props6 = _this.props,\n placement = _this$props6.placement,\n duration = _this$props6.duration,\n ease = _this$props6.ease;\n\n if (transitionStr) {\n document.body.style.overflowX = 'hidden';\n }\n\n _this.dom.style.transition = 'none';\n var heightTransition;\n var widthTransition = \"width \".concat(duration, \" \").concat(ease);\n var transformTransition = \"transform \".concat(duration, \" \").concat(ease);\n\n switch (placement) {\n case 'left':\n {\n _this.dom.style.width = '100%';\n widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n break;\n }\n\n case 'right':\n {\n _this.dom.style.transform = \"translateX(\".concat(right, \"px)\");\n _this.dom.style.width = '100%';\n widthTransition = \"width 0s \".concat(ease, \" \").concat(duration);\n\n if (_this.maskDom) {\n _this.maskDom.style.left = \"-\".concat(right, \"px\");\n _this.maskDom.style.width = \"calc(100% + \".concat(right, \"px)\");\n }\n\n break;\n }\n\n case 'top':\n case 'bottom':\n {\n _this.dom.style.width = \"calc(100% + \".concat(right, \"px)\");\n _this.dom.style.height = '100%';\n _this.dom.style.transform = 'translateZ(0)';\n heightTransition = \"height 0s \".concat(ease, \" \").concat(duration);\n break;\n }\n\n default:\n break;\n }\n\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n if (_this.dom) {\n _this.dom.style.transition = \"\".concat(transformTransition, \",\").concat(heightTransition ? \"\".concat(heightTransition, \",\") : '').concat(widthTransition);\n _this.dom.style.transform = '';\n _this.dom.style.width = '';\n _this.dom.style.height = '';\n }\n });\n };\n\n _this.getCurrentDrawerSome = function () {\n return !Object.keys(currentDrawer).some(function (key) {\n return currentDrawer[key];\n });\n };\n\n _this.getLevelDom = function (_ref) {\n var level = _ref.level,\n getContainer = _ref.getContainer;\n\n if (windowIsUndefined) {\n return;\n }\n\n var container = getContainer && getContainer();\n var parent = container ? container.parentNode : null;\n _this.levelDom = [];\n\n if (level === 'all') {\n var children = parent ? Array.prototype.slice.call(parent.children) : [];\n children.forEach(function (child) {\n if (child.nodeName !== 'SCRIPT' && child.nodeName !== 'STYLE' && child.nodeName !== 'LINK' && child !== container) {\n _this.levelDom.push(child);\n }\n });\n } else if (level) {\n dataToArray(level).forEach(function (key) {\n document.querySelectorAll(key).forEach(function (item) {\n _this.levelDom.push(item);\n });\n });\n }\n };\n\n _this.getHorizontalBoolAndPlacementName = function () {\n var placement = _this.props.placement;\n var isHorizontal = placement === 'left' || placement === 'right';\n var placementName = \"translate\".concat(isHorizontal ? 'X' : 'Y');\n return {\n isHorizontal: isHorizontal,\n placementName: placementName\n };\n };\n\n _this.state = {\n _self: _assertThisInitialized(_this)\n };\n return _this;\n }\n\n _createClass(DrawerChild, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!windowIsUndefined) {\n var passiveSupported = false;\n\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: function get() {\n passiveSupported = true;\n return null;\n }\n }));\n } catch (err) {}\n\n this.passive = passiveSupported ? {\n passive: false\n } : false;\n }\n\n var _this$props7 = this.props,\n open = _this$props7.open,\n getContainer = _this$props7.getContainer,\n showMask = _this$props7.showMask;\n var container = getContainer && getContainer();\n this.drawerId = \"drawer_id_\".concat(Number((Date.now() + Math.random()).toString().replace('.', Math.round(Math.random() * 9).toString())).toString(16));\n this.getLevelDom(this.props);\n\n if (open) {\n if (container && container.parentNode === document.body) {\n currentDrawer[this.drawerId] = open;\n } // 默认打开状态时推出 level;\n\n\n this.openLevelTransition();\n this.forceUpdate(function () {\n _this2.domFocus();\n });\n\n if (showMask) {\n var _this$props$scrollLoc;\n\n (_this$props$scrollLoc = this.props.scrollLocker) === null || _this$props$scrollLoc === void 0 ? void 0 : _this$props$scrollLoc.lock();\n }\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props8 = this.props,\n open = _this$props8.open,\n getContainer = _this$props8.getContainer,\n scrollLocker = _this$props8.scrollLocker,\n showMask = _this$props8.showMask;\n var container = getContainer && getContainer();\n\n if (open !== prevProps.open) {\n if (container && container.parentNode === document.body) {\n currentDrawer[this.drawerId] = !!open;\n }\n\n this.openLevelTransition();\n\n if (open) {\n this.domFocus();\n\n if (showMask) {\n scrollLocker === null || scrollLocker === void 0 ? void 0 : scrollLocker.lock();\n }\n } else {\n scrollLocker === null || scrollLocker === void 0 ? void 0 : scrollLocker.unLock();\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this$props9 = this.props,\n open = _this$props9.open,\n scrollLocker = _this$props9.scrollLocker;\n delete currentDrawer[this.drawerId];\n\n if (open) {\n this.setLevelTransform(false);\n document.body.style.touchAction = '';\n }\n\n scrollLocker === null || scrollLocker === void 0 ? void 0 : scrollLocker.unLock();\n } // tslint:disable-next-line:member-ordering\n\n }, {\n key: \"render\",\n value: function render() {\n var _classnames,\n _this3 = this;\n\n var _this$props10 = this.props,\n className = _this$props10.className,\n children = _this$props10.children,\n style = _this$props10.style,\n width = _this$props10.width,\n height = _this$props10.height,\n defaultOpen = _this$props10.defaultOpen,\n $open = _this$props10.open,\n prefixCls = _this$props10.prefixCls,\n placement = _this$props10.placement,\n level = _this$props10.level,\n levelMove = _this$props10.levelMove,\n ease = _this$props10.ease,\n duration = _this$props10.duration,\n getContainer = _this$props10.getContainer,\n handler = _this$props10.handler,\n onChange = _this$props10.onChange,\n afterVisibleChange = _this$props10.afterVisibleChange,\n showMask = _this$props10.showMask,\n maskClosable = _this$props10.maskClosable,\n maskStyle = _this$props10.maskStyle,\n onClose = _this$props10.onClose,\n onHandleClick = _this$props10.onHandleClick,\n keyboard = _this$props10.keyboard,\n getOpenCount = _this$props10.getOpenCount,\n scrollLocker = _this$props10.scrollLocker,\n contentWrapperStyle = _this$props10.contentWrapperStyle,\n props = _objectWithoutProperties(_this$props10, [\"className\", \"children\", \"style\", \"width\", \"height\", \"defaultOpen\", \"open\", \"prefixCls\", \"placement\", \"level\", \"levelMove\", \"ease\", \"duration\", \"getContainer\", \"handler\", \"onChange\", \"afterVisibleChange\", \"showMask\", \"maskClosable\", \"maskStyle\", \"onClose\", \"onHandleClick\", \"keyboard\", \"getOpenCount\", \"scrollLocker\", \"contentWrapperStyle\"]); // 首次渲染都将是关闭状态。\n\n\n var open = this.dom ? $open : false;\n var wrapperClassName = classnames(prefixCls, (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-\").concat(placement), true), _defineProperty(_classnames, \"\".concat(prefixCls, \"-open\"), open), _defineProperty(_classnames, className || '', !!className), _defineProperty(_classnames, 'no-mask', !showMask), _classnames));\n\n var _this$getHorizontalBo2 = this.getHorizontalBoolAndPlacementName(),\n placementName = _this$getHorizontalBo2.placementName; // 百分比与像素动画不同步,第一次打用后全用像素动画。\n // const defaultValue = !this.contentDom || !level ? '100%' : `${value}px`;\n\n\n var placementPos = placement === 'left' || placement === 'top' ? '-100%' : '100%';\n var transform = open ? '' : \"\".concat(placementName, \"(\").concat(placementPos, \")\");\n var handlerChildren = handler && /*#__PURE__*/React.cloneElement(handler, {\n onClick: function onClick(e) {\n if (handler.props.onClick) {\n handler.props.onClick();\n }\n\n if (onHandleClick) {\n onHandleClick(e);\n }\n },\n ref: function ref(c) {\n _this3.handlerDom = c;\n }\n });\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, omit(props, ['switchScrollingEffect']), {\n tabIndex: -1,\n className: wrapperClassName,\n style: style,\n ref: function ref(c) {\n _this3.dom = c;\n },\n onKeyDown: open && keyboard ? this.onKeyDown : undefined,\n onTransitionEnd: this.onWrapperTransitionEnd\n }), showMask && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-mask\"),\n onClick: maskClosable ? onClose : undefined,\n style: maskStyle,\n ref: function ref(c) {\n _this3.maskDom = c;\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content-wrapper\"),\n style: _objectSpread({\n transform: transform,\n msTransform: transform,\n width: isNumeric(width) ? \"\".concat(width, \"px\") : width,\n height: isNumeric(height) ? \"\".concat(height, \"px\") : height\n }, contentWrapperStyle),\n ref: function ref(c) {\n _this3.contentWrapper = c;\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\"),\n ref: function ref(c) {\n _this3.contentDom = c;\n },\n onTouchStart: open && showMask ? this.removeStartHandler : undefined // 跑用例用\n ,\n onTouchMove: open && showMask ? this.removeMoveHandler : undefined // 跑用例用\n\n }, children), handlerChildren));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, _ref2) {\n var prevProps = _ref2.prevProps,\n _self = _ref2._self;\n var nextState = {\n prevProps: props\n };\n\n if (prevProps !== undefined) {\n var placement = props.placement,\n level = props.level;\n\n if (placement !== prevProps.placement) {\n // test 的 bug, 有动画过场,删除 dom\n _self.contentDom = null;\n }\n\n if (level !== prevProps.level) {\n _self.getLevelDom(props);\n }\n }\n\n return nextState;\n }\n }]);\n\n return DrawerChild;\n}(React.Component);\n\nexport default DrawerChild;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport Portal from \"rc-util/es/PortalWrapper\";\nimport * as React from 'react';\nimport Child from './DrawerChild';\n\nvar DrawerWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DrawerWrapper, _React$Component);\n\n var _super = _createSuper(DrawerWrapper);\n\n function DrawerWrapper(props) {\n var _this;\n\n _classCallCheck(this, DrawerWrapper);\n\n _this = _super.call(this, props);\n\n _this.onHandleClick = function (e) {\n var _this$props = _this.props,\n onHandleClick = _this$props.onHandleClick,\n $open = _this$props.open;\n\n if (onHandleClick) {\n onHandleClick(e);\n }\n\n if (typeof $open === 'undefined') {\n var _open = _this.state.open;\n\n _this.setState({\n open: !_open\n });\n }\n };\n\n _this.onClose = function (e) {\n var _this$props2 = _this.props,\n onClose = _this$props2.onClose,\n open = _this$props2.open;\n\n if (onClose) {\n onClose(e);\n }\n\n if (typeof open === 'undefined') {\n _this.setState({\n open: false\n });\n }\n };\n\n var open = typeof props.open !== 'undefined' ? props.open : !!props.defaultOpen;\n _this.state = {\n open: open\n };\n\n if ('onMaskClick' in props) {\n console.warn('`onMaskClick` are removed, please use `onClose` instead.');\n }\n\n return _this;\n }\n\n _createClass(DrawerWrapper, [{\n key: \"render\",\n value: // tslint:disable-next-line:member-ordering\n function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n defaultOpen = _this$props3.defaultOpen,\n getContainer = _this$props3.getContainer,\n wrapperClassName = _this$props3.wrapperClassName,\n forceRender = _this$props3.forceRender,\n handler = _this$props3.handler,\n props = _objectWithoutProperties(_this$props3, [\"defaultOpen\", \"getContainer\", \"wrapperClassName\", \"forceRender\", \"handler\"]);\n\n var open = this.state.open; // 渲染在当前 dom 里;\n\n if (!getContainer) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperClassName,\n ref: function ref(c) {\n _this2.dom = c;\n }\n }, /*#__PURE__*/React.createElement(Child, _extends({}, props, {\n open: open,\n handler: handler,\n getContainer: function getContainer() {\n return _this2.dom;\n },\n onClose: this.onClose,\n onHandleClick: this.onHandleClick\n })));\n } // 如果有 handler 为内置强制渲染;\n\n\n var $forceRender = !!handler || forceRender;\n return /*#__PURE__*/React.createElement(Portal, {\n visible: open,\n forceRender: $forceRender,\n getContainer: getContainer,\n wrapperClassName: wrapperClassName\n }, function (_ref) {\n var visible = _ref.visible,\n afterClose = _ref.afterClose,\n rest = _objectWithoutProperties(_ref, [\"visible\", \"afterClose\"]);\n\n return (\n /*#__PURE__*/\n // react 15,componentWillUnmount 时 Portal 返回 afterClose, visible.\n React.createElement(Child, _extends({}, props, rest, {\n open: visible !== undefined ? visible : open,\n afterVisibleChange: afterClose !== undefined ? afterClose : props.afterVisibleChange,\n handler: handler,\n onClose: _this2.onClose,\n onHandleClick: _this2.onHandleClick\n }))\n );\n });\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, _ref2) {\n var prevProps = _ref2.prevProps;\n var newState = {\n prevProps: props\n };\n\n if (typeof prevProps !== 'undefined' && props.open !== prevProps.open) {\n newState.open = props.open;\n }\n\n return newState;\n }\n }]);\n\n return DrawerWrapper;\n}(React.Component);\n\nDrawerWrapper.defaultProps = {\n prefixCls: 'drawer',\n placement: 'left',\n getContainer: 'body',\n defaultOpen: false,\n level: 'all',\n duration: '.3s',\n ease: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n onChange: function onChange() {},\n afterVisibleChange: function afterVisibleChange() {},\n handler: /*#__PURE__*/React.createElement(\"div\", {\n className: \"drawer-handle\"\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"drawer-handle-icon\"\n })),\n showMask: true,\n maskClosable: true,\n maskStyle: {},\n wrapperClassName: '',\n className: '',\n keyboard: true,\n forceRender: false\n};\nexport default DrawerWrapper;","// export this package's api\nimport Drawer from './DrawerWrapper';\nexport default Drawer;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport * as React from 'react';\nimport RcDrawer from 'rc-drawer';\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport { tuple } from '../_util/type';\nimport useForceUpdate from '../_util/hooks/useForceUpdate';\nvar DrawerContext = /*#__PURE__*/React.createContext(null);\nvar PlacementTypes = tuple('top', 'right', 'bottom', 'left');\nvar defaultPushState = {\n distance: 180\n};\nvar Drawer = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var _a$width = _a.width,\n width = _a$width === void 0 ? 256 : _a$width,\n _a$height = _a.height,\n height = _a$height === void 0 ? 256 : _a$height,\n _a$closable = _a.closable,\n closable = _a$closable === void 0 ? true : _a$closable,\n _a$placement = _a.placement,\n placement = _a$placement === void 0 ? 'right' : _a$placement,\n _a$maskClosable = _a.maskClosable,\n maskClosable = _a$maskClosable === void 0 ? true : _a$maskClosable,\n _a$mask = _a.mask,\n mask = _a$mask === void 0 ? true : _a$mask,\n _a$level = _a.level,\n level = _a$level === void 0 ? null : _a$level,\n _a$keyboard = _a.keyboard,\n keyboard = _a$keyboard === void 0 ? true : _a$keyboard,\n _a$push = _a.push,\n _push = _a$push === void 0 ? defaultPushState : _a$push,\n _a$closeIcon = _a.closeIcon,\n closeIcon = _a$closeIcon === void 0 ? /*#__PURE__*/React.createElement(CloseOutlined, null) : _a$closeIcon,\n bodyStyle = _a.bodyStyle,\n drawerStyle = _a.drawerStyle,\n prefixCls = _a.prefixCls,\n className = _a.className,\n direction = _a.direction,\n visible = _a.visible,\n children = _a.children,\n zIndex = _a.zIndex,\n destroyOnClose = _a.destroyOnClose,\n style = _a.style,\n title = _a.title,\n headerStyle = _a.headerStyle,\n onClose = _a.onClose,\n footer = _a.footer,\n footerStyle = _a.footerStyle,\n rest = __rest(_a, [\"width\", \"height\", \"closable\", \"placement\", \"maskClosable\", \"mask\", \"level\", \"keyboard\", \"push\", \"closeIcon\", \"bodyStyle\", \"drawerStyle\", \"prefixCls\", \"className\", \"direction\", \"visible\", \"children\", \"zIndex\", \"destroyOnClose\", \"style\", \"title\", \"headerStyle\", \"onClose\", \"footer\", \"footerStyle\"]);\n\n var forceUpdate = useForceUpdate();\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalPush = _React$useState2[0],\n setPush = _React$useState2[1];\n\n var parentDrawer = React.useContext(DrawerContext);\n var destroyClose = React.useRef(false);\n React.useEffect(function () {\n // fix: delete drawer in child and re-render, no push started.\n // {show && }\n if (visible && parentDrawer) {\n parentDrawer.push();\n }\n\n return function () {\n if (parentDrawer) {\n parentDrawer.pull(); // parentDrawer = null;\n }\n };\n }, []);\n React.useEffect(function () {\n if (parentDrawer) {\n if (visible) {\n parentDrawer.push();\n } else {\n parentDrawer.pull();\n }\n }\n }, [visible]);\n var operations = React.useMemo(function () {\n return {\n push: function push() {\n if (_push) {\n setPush(true);\n }\n },\n pull: function pull() {\n if (_push) {\n setPush(false);\n }\n }\n };\n }, [_push]);\n React.useImperativeHandle(ref, function () {\n return operations;\n }, [operations]);\n var isDestroyOnClose = destroyOnClose && !visible;\n\n var onDestroyTransitionEnd = function onDestroyTransitionEnd() {\n if (!isDestroyOnClose) {\n return;\n }\n\n if (!visible) {\n destroyClose.current = true;\n forceUpdate();\n }\n };\n\n var getOffsetStyle = function getOffsetStyle() {\n // https://github.com/ant-design/ant-design/issues/24287\n if (!visible && !mask) {\n return {};\n }\n\n var offsetStyle = {};\n\n if (placement === 'left' || placement === 'right') {\n offsetStyle.width = width;\n } else {\n offsetStyle.height = height;\n }\n\n return offsetStyle;\n };\n\n var getRcDrawerStyle = function getRcDrawerStyle() {\n // get drawer push width or height\n var getPushTransform = function getPushTransform(_placement) {\n var distance;\n\n if (typeof _push === 'boolean') {\n distance = _push ? defaultPushState.distance : 0;\n } else {\n distance = _push.distance;\n }\n\n distance = parseFloat(String(distance || 0));\n\n if (_placement === 'left' || _placement === 'right') {\n return \"translateX(\".concat(_placement === 'left' ? distance : -distance, \"px)\");\n }\n\n if (_placement === 'top' || _placement === 'bottom') {\n return \"translateY(\".concat(_placement === 'top' ? distance : -distance, \"px)\");\n }\n }; // 当无 mask 时,将 width 应用到外层容器上\n // 解决 https://github.com/ant-design/ant-design/issues/12401 的问题\n\n\n var offsetStyle = mask ? {} : getOffsetStyle();\n return _extends(_extends({\n zIndex: zIndex,\n transform: internalPush ? getPushTransform(placement) : undefined\n }, offsetStyle), style);\n };\n\n function renderCloseIcon() {\n return closable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n \"aria-label\": \"Close\",\n className: \"\".concat(prefixCls, \"-close\"),\n style: {\n '--scroll-bar': \"\".concat(getScrollBarSize(), \"px\")\n }\n }, closeIcon);\n }\n\n function renderHeader() {\n if (!title && !closable) {\n return null;\n }\n\n var headerClassName = title ? \"\".concat(prefixCls, \"-header\") : \"\".concat(prefixCls, \"-header-no-title\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: headerClassName,\n style: headerStyle\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\")\n }, title), closable && renderCloseIcon());\n }\n\n function renderFooter() {\n if (!footer) {\n return null;\n }\n\n var footerClassName = \"\".concat(prefixCls, \"-footer\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: footerClassName,\n style: footerStyle\n }, footer);\n } // render drawer body dom\n\n\n var renderBody = function renderBody() {\n if (destroyClose.current && !visible) {\n return null;\n }\n\n destroyClose.current = false;\n var containerStyle = {};\n\n if (isDestroyOnClose) {\n // Increase the opacity transition, delete children after closing.\n containerStyle.opacity = 0;\n containerStyle.transition = 'opacity .3s';\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-wrapper-body\"),\n style: _extends(_extends({}, containerStyle), drawerStyle),\n onTransitionEnd: onDestroyTransitionEnd\n }, renderHeader(), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, children), renderFooter());\n };\n\n var drawerClassName = classNames(_defineProperty({\n 'no-mask': !mask\n }, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n var offsetStyle = mask ? getOffsetStyle() : {};\n return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n value: operations\n }, /*#__PURE__*/React.createElement(RcDrawer, _extends({\n handler: false\n }, _extends({\n placement: placement,\n prefixCls: prefixCls,\n maskClosable: maskClosable,\n level: level,\n keyboard: keyboard,\n children: children,\n onClose: onClose\n }, rest), offsetStyle, {\n open: visible,\n showMask: mask,\n style: getRcDrawerStyle(),\n className: drawerClassName\n }), renderBody()));\n});\nDrawer.displayName = 'Drawer';\nvar DrawerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls,\n customizeGetContainer = props.getContainer;\n\n var _React$useContext = React.useContext(ConfigContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n\n var prefixCls = getPrefixCls('drawer', customizePrefixCls);\n var getContainer = // 有可能为 false,所以不能直接判断\n customizeGetContainer === undefined && getPopupContainer ? function () {\n return getPopupContainer(document.body);\n } : customizeGetContainer;\n return /*#__PURE__*/React.createElement(Drawer, _extends({}, props, {\n ref: ref,\n prefixCls: prefixCls,\n getContainer: getContainer,\n direction: direction\n }));\n});\nDrawerWrapper.displayName = 'DrawerWrapper';\nexport default DrawerWrapper;","import React, { useState } from \"react\"\nimport { API } from \"aws-amplify\"\nimport { Loading } from \"../../../Layout/Components\"\n\ntype Props = {\n table: string\n id: string\n field: string\n jsonKey: string\n fileNumber: number\n}\n\nconst DownloadFile: React.FC = (props) => {\n const [isLoading, setIsLoading] = useState(false)\n\n const downloadFileFromS3 = async () => {\n try {\n setIsLoading(true)\n const session = await API.get(\"ecoversoTools\", \"/getfile\", {\n queryStringParameters: {\n table: props.table,\n id: props.id,\n field: props.field,\n jsonKey: props.jsonKey,\n fileNumber: props.fileNumber,\n },\n })\n if (session.success) {\n window.open(session.downloadUrl, \"_blank\")\n } else {\n console.log(\"API\", session)\n }\n setIsLoading(false)\n } catch (e) {\n console.log(\"Error: \", e)\n }\n }\n\n return (\n {\n if (!isLoading) downloadFileFromS3()\n }}\n >\n \n \n )\n}\n\nexport default DownloadFile\n","import React, { useState, useEffect } from \"react\"\n\nimport { useSelector, useDispatch, ReactReduxContext } from \"react-redux\"\nimport * as actions from \"../../../store/actions\"\nimport { useQuery, useMutation } from \"@apollo/client\"\n\nimport { differenceInCalendarDays, isFuture, isPast, parseISO } from \"date-fns\"\n\nimport gql from \"graphql-tag\"\nimport { getBuyingGroupAsReseller, updateChosedVariant } from \"../../../graphql.my/queries\"\n\nimport { Drawer, Table, Tag, Row, Col } from \"antd\"\nimport { capitalizeWords } from \"../../../Layout/Forms/utils\"\nimport { Icon } from \"../../../Layout/Components\"\n\nimport DownloadFile from \"./DownloadFile\"\nimport { FormatDate, useI18next } from \"../../../i18n\"\n\nimport FormGenerator from \"../../../Layout/Forms/FormGenerator\"\nimport _ from \"lodash\"\n\ntype Props = {\n data: any\n children: any\n parentRefetch?: Function\n}\n\nconst UserInGroupDetails: React.FC = ({ data, children, parentRefetch }) => {\n const { t } = useI18next()\n const dispatch = useDispatch()\n\n const isAdmin = useSelector((state) => state.auth.payload.role?.includes(\"Admin\") || state.auth.payload.role?.includes(\"SuperAdmin\"))\n const [isVisible, setIsVisible] = useState(false)\n\n const [form, setForm] = useState({})\n const [formData, setFormData] = useState({} as any)\n const [formDisabled, setFormDisabled] = useState(false)\n\n //console.log(data)\n const step2details = data?.chosedVariant?.userChoosingCustomValues ? JSON.parse(data?.chosedVariant?.userChoosingCustomValues) : {}\n const step3details = data?.chosedVariant?.userConfirmationCustomValues ? JSON.parse(data?.chosedVariant?.userConfirmationCustomValues) : {}\n const resellerDetails = data?.chosedVariant?.resellerSellingCustomValues ? JSON.parse(data?.chosedVariant?.resellerSellingCustomValues) : {}\n\n const details = {\n ...step2details,\n ...step3details,\n }\n\n //---------------------------------------------------------------------------------------------------------------------------------------------------------\n\n const [updateUserChosedVariant, { loading: updateUserChosedVariantLoading }] = useMutation(gql(updateChosedVariant), {\n onCompleted: () => {\n dispatch(\n actions.notificationAdd({\n message: \"Informazioni salvate\",\n variant: \"SmileIcon\",\n duration: 30,\n })\n )\n },\n onError: (error) => {\n dispatch(actions.notificationAdd({ message: t(\"API Error\"), variant: \"DangerIcon\" }))\n console.log(\"API Error\", error)\n return null\n },\n })\n\n // On SAVE\n const onSubmit = async (values: any, setSubmitting) => {\n await updateUserChosedVariant({\n variables: {\n updateChosed_variantInput: {\n id: data.chosedVariant.id,\n dateFinalization: values.dateFinalization,\n dateDelivered: values.dateDelivered,\n dateCanceled: values.dateCanceled ? \"set\" : null,\n idVariant: values.variant ? values.variant : data.chosedVariant.Variant.id,\n resellerSellingCustomValues: JSON.stringify(_.omit(values, [\"dateFinalization\", \"dateDelivered\", \"dateCanceled\", \"variant\"])).replace(\n /\\\\n/g,\n \"\\\\\\\\n\"\n ),\n },\n },\n })\n\n setSubmitting(false)\n if (parentRefetch) parentRefetch()\n }\n\n const onChange = (values) => {\n let newData = { ...formData, values }\n setFormData(newData)\n //console.log(newData)\n }\n\n // On LOAD\n useEffect(() => {\n if (data.variantDefinition?.GoodOrService?.GoodOrServiceType?.resellerSellingCustomFieldsDef) {\n const formDefinition = JSON.parse(data.variantDefinition?.GoodOrService?.GoodOrServiceType?.resellerSellingCustomFieldsDef)\n\n if (formDefinition.variant) {\n formDefinition.variant = {\n title: formDefinition.variant.title,\n type: \"string\",\n fieldType: \"select\",\n fieldProperties: {\n placeholder: \"Select...\",\n options: data.GoodsOrServices?.map((g) => {\n return g.Variants?.length > 0\n ? {\n label: g.GoodOrService.name,\n options: g.Variants?.map((v) => ({\n value: v.id,\n title: v.name,\n })),\n }\n : null\n }).filter((e) => e != null) || [{ value: \"0\", title: \"Errore, contatta l'amminiatratore del sito\" }],\n },\n required: true,\n errMessages: {\n required: \"E' necessario effettuare una scelta\",\n },\n }\n }\n\n setForm(formDefinition)\n }\n\n // Disable form if neede\n if (data.chosedVariant.dateDelivered && !isAdmin) setFormDisabled(true)\n if (data.chosedVariant.dateCanceled && !isAdmin) setFormDisabled(true)\n\n setFormData({\n ...step3details,\n ...step3details,\n ..._.omit(resellerDetails, [\"dateFinalization\", \"dateDelivered\", \"dateCanceled\", \"variant\"]),\n dateFinalization: data.chosedVariant.dateFinalization,\n dateDelivered: data.chosedVariant.dateDelivered,\n dateCanceled: data.chosedVariant.dateCanceled ? true : false,\n variant: data.chosedVariant.Variant.id,\n })\n }, [data])\n //---------------------------------------------------------------------------------------------------------------------------------------------------------\n\n return (\n \n

    setIsVisible(true)}>{children}
    \n setIsVisible(false)} visible={isVisible}>\n {data && isVisible ? (\n \n
    \n \n Associato dal  \n \n {data.User?.subscribedUntil && isPast(parseISO(data.User?.subscribedUntil)) ? (\n \n   al \n \n \n ) : null}\n
    \n \n \n
    nome
    \n
    {data.User?.firstName || \"-\"}
    \n \n \n
    cognome
    \n
    {data.User?.lastName || \"-\"}
    \n \n
    \n \n \n
    email
    \n \n \n\n \n
    cellulare
    \n
    {data.User?.mobile || \"-\"}
    \n \n
    \n \n \n
    Città e Provincia
    \n
    \n {data.User?.city ? `${data.User.city}` : \"\"}\n {data.User?.state ? ` (${data.User.state})` : \"\"}\n
    \n \n \n
    Codice Fiscale
    \n
    {data.User?.taxCode?.toUpperCase()}
    \n \n
    \n
    \n Dettagli:\n
      \n {Object.keys(details).map((key) => {\n const value = details[key]\n if (Array.isArray(value) && value[0]?.key) {\n // File(s)\n return (\n
    • \n {key[0].toUpperCase() + key.substring(1)}:\n
        \n {value.map((file, fileNumber) => (\n
      • \n {file.key}\n \n
      • \n ))}\n
      \n
    • \n )\n } else if (Array.isArray(value)) {\n // Array of strings\n return (\n
    • \n {key[0].toUpperCase() + key.substring(1)}:{\" \"}\n {value.reduce((all, cur) => {\n return all ? all + \", \" + cur : cur\n })}\n
    • \n )\n } else {\n // Direct data\n return (\n
    • \n {key[0].toUpperCase() + key.substring(1)}: {value}\n
    • \n )\n }\n })}\n {Object.keys(details).length == 0 ?
    • Nessun dettaglio inserito
    • : null}\n
    \n {form != null && data.confirmationDate && !data.definitelyNotInterestedInBuying ? (\n \n ) : null}\n
    \n ) : null}\n
    \n \n )\n}\n\nexport default UserInGroupDetails\n","import React, { useState, useEffect } from \"react\"\n\nimport { useSelector, useDispatch, ReactReduxContext } from \"react-redux\"\nimport { useQuery, useMutation } from \"@apollo/client\"\n\nimport { differenceInCalendarDays, isFuture, isPast, parseISO } from \"date-fns\"\n\nimport gql from \"graphql-tag\"\nimport { getBuyingGroupAsReseller } from \"../../../graphql.my/queries\"\n\nimport { Drawer, Table, Tag } from \"antd\"\nimport { capitalizeWords } from \"../../../Layout/Forms/utils\"\nimport UserInGroupDetails from \"./UserInGroupDetails\"\nimport { FormatDate } from \"../../../i18n\"\n\ntype Props = {\n buyingGroupId: string\n as: \"admin\" | \"reseller\"\n children: any\n}\n\nconst tagColors = {\n REGISTRATO: \"lime\",\n PARTECIPANTE: \"cyan\",\n SCELTO: \"blue\",\n CONFERMATO: \"geekblue\",\n CANCELLATO: \"red\",\n CONTRATTUALIZZATO: \"green\",\n CONSEGNATO: \"magenta\",\n FATTURATO: \"purple\",\n INFORMAZIONI: \"gold\",\n}\nconst tagOrder = { REGISTRATO: 1, PARTECIPANTE: 2, SCELTO: 3, CONFERMATO: 4, CANCELLATO: 5, CONTRATTUALIZZATO: 6, CONSEGNATO: 7, FATTURATO: 8, INFORMAZIONI: 0 }\nconst urgenzaOrder = { Alto: 1, Medio: 2, Basso: 3 }\nconst urgenzaColors = { Alto: \"red\", Medio: \"orange\", Basso: \"green\" }\n\n//----------------------------------------------------------------------------------------------------\n// Definizione delle colonne\nconst getColumns = (as, additionalColumns: string[] = [], refetch?: Function) => {\n const columns = []\n columns.push({\n title: \"Nominativo\",\n dataIndex: \"nominativo\",\n key: \"nominativo\",\n sorter: (a, b) => (a.nominativo < b.nominativo ? -1 : a.nominativo > b.nominativo ? 1 : 0),\n defaultSortOrder: \"ascend\",\n width: 200,\n fixed: \"left\",\n })\n columns.push({\n title: \"Codice Sconto\",\n dataIndex: \"discountCode\",\n key: \"discountCode\",\n sorter: (a, b) => (a.discountCode < b.discountCode ? -1 : a.discountCode > b.discountCode ? 1 : 0),\n defaultSortOrder: \"ascend\",\n width: 200,\n fixed: \"left\",\n })\n columns.push({\n title: \"Stato\",\n dataIndex: \"stage\",\n key: \"stage\",\n sorter: (a, b) => (tagOrder[a.stage.tag] + \" \" + a.stage.date.toISOString() > tagOrder[b.stage.tag] + \" \" + b.stage.date.toISOString() ? 1 : -1),\n render: (stage) => (\n \n \n {stage.tag.toUpperCase()}\n {\" \"}\n il \n \n ),\n filters:\n as == \"admin\"\n ? Object.keys(tagOrder).map((tagName) => {\n return { text: tagName, value: tagName }\n })\n : null,\n onFilter: (value, record) => record.stage.tag == value,\n })\n if (additionalColumns.includes(\"urgenza\"))\n columns.push({\n title: \"Urgenza\",\n dataIndex: \"urgenza\",\n key: \"urgenza\",\n sorter: (a, b) => (urgenzaOrder[a.urgenza] > urgenzaOrder[b.urgenza] ? 1 : -1),\n render: (urgenza: string) => {\n if (urgenza != \"\")\n return (\n \n {urgenza.toUpperCase()}\n \n )\n },\n filters: Object.keys(urgenzaOrder).map((tagName) => {\n return { text: tagName, value: tagName }\n }),\n onFilter: (value, record) => record.urgenza == value,\n })\n columns.push({\n title: \"Variante\",\n dataIndex: \"variante\",\n key: \"variante\",\n sorter: (a, b) => (a.variante?.Variant?.name > b.variante?.Variant?.name ? 1 : -1),\n render: (variante) => variante?.Variant?.name,\n })\n if (as == \"admin\")\n columns.push({\n title: \"Rivenditore\",\n dataIndex: \"variante\",\n key: \"rivenditore\",\n sorter: (a, b) => ((a.variante?.Reseller?.name || \"zzz\") > (b.variante?.Reseller?.name || \"zzz\") ? 1 : -1),\n render: (variante) => variante?.Reseller?.name,\n })\n if (additionalColumns.includes(\"referente\"))\n columns.push({\n title: \"Referente\",\n dataIndex: \"referente\",\n key: \"referente\",\n sorter: (a, b) => (a.referente > b.referente ? 1 : -1),\n })\n if (additionalColumns.includes(\"dataPrimoContatto\"))\n columns.push({\n title: \"Primo contatto\",\n dataIndex: \"dataPrimoContatto\",\n key: \"dataPrimoContatto\",\n render: (dataPrimoContatto) => ,\n })\n columns.push({\n title: \"Dettagli\",\n dataIndex: \"userInBuyingGroup\",\n key: \"scelta\",\n render: (userInBuyingGroup) =>\n userInBuyingGroup?.chosedVariant?.userChoosingCustomValues || userInBuyingGroup?.chosedVariant?.userConfirmationCustomValues ? (\n \n visualizza\n \n ) : null,\n width: 100,\n fixed: \"right\",\n })\n\n return columns\n}\n//----------------------------------------------------------------------------------------------------\n\nconst ManageGroup: React.FC = (props) => {\n const [isVisible, setIsVisible] = useState(false)\n\n const { loading, error, data: queryData, refetch } = useQuery(gql(getBuyingGroupAsReseller), { variables: { id: props.buyingGroupId }, skip: !isVisible })\n const [childDrawerVisibility, setChildDrawerVisibility] = useState(false)\n const [groupData, setGroupData] = useState({} as any)\n const [as, setAs] = useState(props.as)\n\n const [tableData, setTableData] = useState([])\n const [tableColumns, setTableColumns] = useState(getColumns(props.as))\n const [filteredCount, setFilteredCount] = useState(-1)\n\n useEffect(() => {\n //console.log(\"Data: \", queryData)\n const theGroupData = queryData?.getBuying_group\n setGroupData(theGroupData)\n\n //----------------------------------------------------------------------------------------------------------------\n // Prepare data for table\n const additionalColumns = []\n\n if (theGroupData && Array.isArray(theGroupData.UsersInBuyingGroup)) {\n const tmpTableData = theGroupData.UsersInBuyingGroup.map((userInBuyingGroup, i) => {\n const chosedVariant = userInBuyingGroup.ChosedVariants?.reduce((chosedVariant, possibleVariant) =>\n possibleVariant.dateCanceled ? chosedVariant : possibleVariant\n )\n const variantDefinition = theGroupData.GoodOrServiceVariants.filter((variant) => variant.id == chosedVariant?.Variant.id)[0]\n\n // Process Dates\n const registrationDate = userInBuyingGroup.registrationDate != null ? parseISO(userInBuyingGroup.registrationDate) : null\n const participationDate = userInBuyingGroup.participationDate != null ? parseISO(userInBuyingGroup.participationDate) : null\n const choosingDate = userInBuyingGroup.choosingDate != null ? parseISO(userInBuyingGroup.choosingDate) : null\n const confirmationDate = userInBuyingGroup.confirmationDate != null ? parseISO(userInBuyingGroup.confirmationDate) : null\n const dateBilled = chosedVariant?.dateBilled != null ? parseISO(chosedVariant.dateBilled) : null\n const dateDelivered = chosedVariant?.dateDelivered != null ? parseISO(chosedVariant.dateDelivered) : null\n const dateFinalization = chosedVariant?.dateFinalization != null ? parseISO(chosedVariant.dateFinalization) : null\n const dateCanceled = chosedVariant?.dateCanceled != null ? parseISO(chosedVariant.dateCanceled) : null\n\n // Check Additional Fields\n const userConfirmationCustomValues = chosedVariant?.userConfirmationCustomValues ? JSON.parse(chosedVariant.userConfirmationCustomValues) : {}\n if (userConfirmationCustomValues.urgenza && !additionalColumns.includes(\"urgenza\")) additionalColumns.push(\"urgenza\")\n\n const resellerSellingCustomValues = chosedVariant?.resellerSellingCustomValues ? JSON.parse(chosedVariant.resellerSellingCustomValues) : {}\n if (resellerSellingCustomValues.referente && !additionalColumns.includes(\"referente\")) additionalColumns.push(\"referente\")\n\n if (resellerSellingCustomValues.dataPrimoContatto && !additionalColumns.includes(\"dataPrimoContatto\")) additionalColumns.push(\"dataPrimoContatto\")\n\n return {\n key: i,\n nominativo: capitalizeWords(userInBuyingGroup.User.lastName) + \" \" + capitalizeWords(userInBuyingGroup.User.firstName),\n discountCode: userInBuyingGroup.User.discountCode && typeof userInBuyingGroup.User.discountCode === 'string' ? userInBuyingGroup.User.discountCode.toUpperCase() : '',\n stage: {\n tag:\n userInBuyingGroup.notInterestInBuying || userInBuyingGroup.definitelyNotInterestedInBuying\n ? \"INFORMAZIONI\"\n : dateBilled\n ? \"FATTURATO\"\n : dateDelivered\n ? \"CONSEGNATO\"\n : dateCanceled\n ? \"CANCELLATO\"\n : dateFinalization\n ? \"CONTRATTUALIZZATO\"\n : confirmationDate\n ? \"CONFERMATO\"\n : choosingDate\n ? \"SCELTO\"\n : participationDate\n ? \"PARTECIPANTE\"\n : \"REGISTRATO\",\n date: dateBilled || dateDelivered || dateFinalization || dateCanceled || confirmationDate || choosingDate || participationDate || registrationDate,\n },\n variante: chosedVariant,\n urgenza: userConfirmationCustomValues.urgenza || \"\",\n referente: resellerSellingCustomValues.referente || \"\",\n dataPrimoContatto: resellerSellingCustomValues.dataPrimoContatto != null ? parseISO(resellerSellingCustomValues.dataPrimoContatto) : null,\n userInBuyingGroup: {\n ...userInBuyingGroup,\n chosedVariant,\n variantDefinition,\n GoodsOrServices: theGroupData.GoodsOrServices,\n },\n }\n })\n\n setTableData(tmpTableData)\n setTableColumns(getColumns(as, additionalColumns, refetch))\n\n //console.log(\"Table: \", tmpTableData)\n }\n //----------------------------------------------------------------------------------------------------------------\n }, [queryData, error])\n\n useEffect(() => {\n if (isVisible) refetch()\n }, [isVisible])\n\n return (\n \n
    setIsVisible(true)}>{props.children}
    \n setIsVisible(false)}\n visible={isVisible}\n bodyStyle={{ paddingTop: 0 }}\n >\n
    \n `Totale: ${tableData.length} ` + (filteredCount != -1 && filteredCount != tableData.length ? `- Filtrati: ${filteredCount}` : \"\")}\n size=\"small\"\n scroll={{ x: \"max-content\", y: \"100%\" }}\n sticky={true}\n onChange={(pagination, filters, sorter, extra) => {\n setFilteredCount(extra.currentDataSource?.length)\n }}\n />\n \n
    \n )\n}\n\nexport default ManageGroup\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n"],"sourceRoot":""}