RITE0300ZfHSMK0000IREPW"03004Ä\\^\\^\^\^\ ^\ ^\ ^Q- Q/ /QQQSW0QQ$8i"Funicular Chat App initializing...pinkusersessionchannel FUNICULAR_ENV productionModel FunicularChannelSessionUser Component ChatComponentChannelListComponentMessageComponentMessageListComponentLoginComponentSettingsComponentputs debug_color= FileUploadmount load_schemasENVT bX_bX_bX_8loginlogout current_userm %4 S .8usernamepassword model_classUsercreate.4.8destroyg 4QW. 8current endpoint_name model_classUserfind<!4!'!/%8callJ aW.cX_cX_cX_cX_cX_cX_cX_cX_cX _ cX _ cX _ 8 styles initializeinitialize_statecomponent_mountedcomponent_will_unmount load_channelsselect_channelhandle_message_inputhandle_send_message handle_logouthandle_message_deleterenderl4Q-Q-8flex h-screen bg-gray-100 flex-1 flexlayout main_contentl,4 %%S32#(/8 channel_idto_i@requested_channel_idÞ=4GGQ     / / S8 channelscurrent_channelmessages message_input current_userloading skip_scrollavatar_cache_busterTimenowto_i=4W08Session current_user‘,4'/Q/%--8/login Funicularrouternavigate current_userpatch load_channelsK4' /%8 @subscription unsubscribe44W08Channelall 4' -%h - /E' -//'8'#W0' - %% #- %8 loadingpatchchannelssizestatecurrent_channel!@requested_channel_idfindselect_channelC4/B8id@requested_channel_idå ¤4G   -0Q/R///'" / /   S/ Q/'/Q//Q / SW08/chat//cable ChatChannelcurrent_channelmessagesloadingpatchid Funicularroutercurrent_location_path!=JSglobalhistoryBridgeto_js replaceState @subscription unsubscribeCablecreate_consumer subscriptionschannel channel_idcreateZ “4Q#Q/&%Q# - %]Q/&%*-/Q#G< - %"Q/&%Q#-%8typeinitial_messagesmessages new_messagemessagedelete_message message_id===messagesloadingpatchstate skip_scrollhandle_message_deleteV4/#-8 message_inputtargetvaluepatch  e4/-////'8#'/Q- Q S/ 8 send_message preventDefaultstate message_inputto_sstripempty?targetresetpatch @subscriptioncontentperform74W08SessionlogoutR4/Q/8/login Funicularrouternavigate‹ "4QRQQôW .8message-opacity-100 max-h-screenopacity-0 max-h-0duration remove_viam '4-/W0- 8statemessagesreject skip_scrollpatch.4Q#!B8idG4-/W.8classslayoutdiv T4-/- /  - /  V VS- - / W. 8 ChannelListComponentpreservechannelsstatecurrent_channel current_useron_select_channel on_logout componentclasss main_contentdiv2 4-8select_channel1 4-8 handle_logoutat4-/- /  - /  - / -/-/ -/  V V VS - 8MessageListComponentpreservecurrent_channelstatemessagesloading message_input current_user skip_scrollavatar_cache_busteron_message_inputon_send_messageon_message_delete component8 4-8handle_message_input7 4-8handle_send_message9 4-8handle_message_delete7W.cX_8stylesrenderc4Q-Q-Q-Q-Q-QQ- Q-Q- Q - Q - Q - Q - 8 )w-64 bg-gray-800 text-white flex flex-col1p-4 bg-gray-900 flex justify-between items-centertext-xl font-bold-text-gray-400 hover:text-white cursor-pointerflex-1 overflow-y-auto$p-4 hover:bg-gray-700 cursor-pointer bg-gray-700 font-semiboldtext-sm text-gray-400 truncate(p-4 bg-gray-900 border-t border-gray-700text-sm font-semiboldtext-xs text-gray-400;mt-2 text-sm text-red-400 hover:text-red-300 cursor-pointersidebarsidebar_header sidebar_titlesettings_button channels_listbaseactive channel_item channel_name channel_desc user_info user_name user_handle logout_buttonH4-/W.8classssidebardiv¸N4-/W.-/W.-#'-/W.%8classssidebar_headerdiv channels_listprops current_user user_infoŸ 34-/W.--/W.!8classs sidebar_titleh2 settings_pathnavigatesettings_buttonlink_to) 4Q8Channels( 4W.8span' 4Q8âš™ï¸D4-#W08propschannelseachµ Q4-#'-#//B/- / V W .08 propscurrent_channelidkeyclasss channel_itemonclickdivN4-#!/8propson_select_channelcalln*4-/W.-/W.8classs channel_namediv channel_desc44Q!/R8# name04!/8 description¿H4-/W.-/W.-#-/W. 8 classs user_namediv user_handleonclickprops on_logout logout_buttonbuttonM4-#/8props current_user display_nameS4Q-#/R8@props current_userusername( 4W.8span' 4Q8Logoutr!W.cX_cX_cX_8stylescomponent_mountedrenderhandle_link_response¹E4Q-Q-Q-Q-Q-Q-Q-Q-Q-8 wflex items-start space-x-3 overflow-hidden transition-[opacity,max-height,transform] duration-500 ease-out max-h-screen1flex-shrink-0 w-10 h-10 rounded-full object-coverfflex-shrink-0 w-10 h-10 bg-blue-500 rounded-full flex items-center justify-center text-white font-boldflex-1flex items-baseline space-x-2font-semibold text-gray-900text-xs text-gray-500text-gray-800 mt-1;ml-2 text-xs text-red-500 hover:text-red-700 cursor-pointer message avatar_imgavatar_placeholdermessage_contentmessage_headermessage_author message_time message_text delete_button¦ *4Q-#Q#RQQ,-8message-idopacity-0 scale-95opacity-100 scale-100propsmessagedurationadd_via¢ 84Q-/RQRQ-#Q#RW. 8 opacity-0 scale-95message-idclasssmessageidpropsdivÌ ê4-#Q#Q#'©-#'"-#/-#Q#Q#B' -#'+Q-#Q#Q#RQR-#R%Q-#Q#Q#RQR-/- %-/ W. -/ W. 8user has_avatarid/users/ /avatar?t=/avatar propsmessage current_useridavatar_cache_bustersrcclasss avatar_imgimgavatar_placeholderdivmessage_content( 4W.8spanh!4-#Q#Q##/8user display_namepropsmessageupcasep*4-/W.-/W.8classsmessage_headerdiv message_textB Œ4-/W.-/W.-#'"-#/-#Q#Q#B'--#Q#-   -/ W. !%8useridclasssmessage_authorspan message_timeprops current_useridmessage message_pathmethoddelete delete_buttonlink_toW4-#Q#Q#8user display_namepropsmessageH4-#Q#8 created_atpropsmessage( 4W.8span' 4Q8DeleteE4-#Q#8contentpropsmessage© I4 ///B' //'Q///328/ to_sdowncaseto_symdeleteerror?!splitlastto_in!W.cX_cX_cX_8stylescomponent_updatedscroll_to_bottomrender| h4Q-Q-Q-Q-Q-Q-Q-Q-Q- Q   Q  Q S- Q -8 flex-1 flex flex-col%bg-white border-b border-gray-200 p-4text-xl font-bold text-gray-800text-sm text-gray-600$flex-1 overflow-y-auto p-4 space-y-4text-center text-gray-500%bg-white border-t border-gray-200 p-4flex space-x-2fflex-1 px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-5005px-6 py-2 rounded-lg font-semibold transition-opacity(bg-blue-600 text-white hover:bg-blue-7004bg-blue-600 text-white opacity-50 cursor-not-allowed5flex-1 flex items-center justify-center text-gray-500chat_container chat_header chat_title chat_subtitle messages_arealoading input_area input_form message_inputbasevariantsenableddisabled send_button empty_state—B4-#'8-#'-#//'-%8props skip_scrollmessagesempty?!scroll_to_bottom94d-#'##$%8sleep_ms@refsmessages_container scrollTop scrollHeightO4-/W.8classschat_containerdivød4-#'?-/W.-/W. -/ W.%-/ W.8 propscurrent_channelclasss chat_headerdivrefmessages_container messages_area input_area empty_stater*4-/W.-/W.8classs chat_titleh3 chat_subtitledivS4Q-#/R8# propscurrent_channelnameO4-#/8propscurrent_channel description‚84-#'-/W.%-#W08propsloadingclasssdivmessageseach4 4Q8Loading messages...ÛE4Q# -  #  -  #  -#S-8id MessageComponentkeymessage current_userpropsavatar_cache_buster on_deleteon_message_delete component}$4-#-/W. 8onsubmitpropson_send_messageclasss input_formformp…4Q-  #  -  #  Q - /- `-#/ / / Q- '%/ W .08textType a message...submitref message_inputtypevaluepropsoninputon_message_input placeholderclasssinputto_sstripempty?disabledenabled send_buttonbutton( 4W.8span% 4Q8Send( 4W.8spanC 4Q8"Select a channel to start chattingj!W.cX_cX_cX_8stylesinitialize_state handle_submitrendert Z4Q-Q-Q-Q-Q-Q-Q-Q Q Q S- Q - 8 [min-h-screen flex items-center justify-center bg-gradient-to-br from-blue-500 to-purple-600'bg-white p-8 rounded-lg shadow-2xl w-961text-3xl font-bold text-center mb-8 text-gray-800Dbg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded mb-4 space-y-4,block text-sm font-medium text-gray-700 mb-2fw-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500Aw-full py-2 px-4 rounded-md transition duration-200 font-semibold(bg-blue-600 text-white hover:bg-blue-700Fbg-blue-600 text-white hover:bg-blue-700 opacity-50 cursor-not-allowed&mt-6 text-center text-sm text-gray-600 containercardtitle error_boxformlabelinputbasevariantsnormalloadingbuttonhintn&4QQSSS8userusernamepassworderrorsloadingø k4#//&#//'QS-8S- ##W08"Please enter username and password usernameto_sempty?passworderrorspatchloadingSessionloginà C4' S- %Q/R-/Q/8Login successful: /chatloadingerrorsusernamepatchputs FunicularrouternavigateJ4-/W.8classs containerdivE4-/W.8classscarddiv´ E4-/W.-/W.!-/ W. 8 classstitleh1user on_submit handle_submitformform_forhintdiv/ 4Q8Funicular Chat½ P4W.W.-/'Q%Q--/'%//8 Logging in...Logindivstateloadingclasssnormalbuttonsubmit« 24!/!-/Q /18Enter your usernameusernamelabelclasssinput placeholder autofocus text_fieldž -4!/!-/Q/!8Enter your passwordpasswordlabelclasssinput placeholderpassword_field( 4W.8span. 4Q8 Demo use only/ XVVô-"W.cX_cX_cX_cX_cX_ cX_ cX _ 8 current_user on_resolve min_delay use_suspensestylesinitialize_statehandle_avatar_change handle_savesave_with_modelsave_with_formdatahandle_formdata_responserender=4W08Session current_usery44'/Q/!/% !/8/login Funicularrouternavigatecalla $4//S-8userusername display_namepatch6 ™4Q-Q-Q-Q-Q-QQQ S- Q- Q - Q - Q - Q -Q -Q-Q-QQQ S- 8min-h-screen bg-gray-100 py-83max-w-2xl mx-auto bg-white rounded-lg shadow-md p-8&flex items-center justify-between mb-6 text-2xl font-bold text-gray-800!text-blue-600 hover:text-blue-800mb-4 p-4 border rounded,bg-green-100 border-green-400 text-green-700&bg-red-100 border-red-400 text-red-700 space-y-6,block text-sm font-medium text-gray-700 mb-2fw-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500Lw-full px-3 py-2 border border-gray-300 rounded-md bg-gray-100 text-gray-600mb-2#w-24 h-24 rounded-full object-cover%flex items-center justify-center py-8Oanimate-spin h-8 w-8 border-4 border-blue-500 border-t-transparent rounded-fullAw-full py-2 px-4 rounded-md transition duration-200 font-semibold(bg-blue-600 text-white hover:bg-blue-700Fbg-blue-600 text-white hover:bg-blue-700 opacity-50 cursor-not-allowed containercardheadertitle back_buttonbasevariantssuccesserrormessageformlabelinputinput_disabledavatar_containeravatarloading_containerloading_spinnernormalsaving submit_buttonÞC4QQSS      / / S8 userusername display_nameerrorsmessageis_erroravatar_previewsavingavatar_cache_busterTimenowto_in4QW08 avatar-input FileUpload Funicularselect_file_with_previeww24''-%-8@selected_avatar_fileavatar_previewpatchÒ A4  S -@'#-% #-8 savingmessageis_errorerrorspatch@selected_avatar_file display_namesave_with_formdatasave_with_modelp'4-/-/-W08 current_user has_avatar display_name=updateƒ‘4'k-QQ#/Q#/'!' -Q/Q    - / -/S - @%Q R  - 08 @display_name display_name has_avatar @has_avatarSettings saved successfully!Error: current_userinstance_variable_setnil?savingmessageis_erroruserusername display_namepatchõD4Q-/RS Q   W 0 18/users/avatar current_userid display_name FileUpload Funicularfields file_fieldfile@selected_avatar_fileupload_with_formdataY4-8@selected_avatar_filehandle_formdata_responseCè4(%Q  -0%ÁQ#&Q#':Q#&Q#Q/    -@%o-QQ#/Q#' -Q/Q    - /  Q#S    / /-`8 Failed to parse responseerrorerrors, @display_name display_nameavatar_updated @has_avatarSettings saved successfully!savingmessageis_errorpatchjoinavatar_preview current_userinstance_variable_setuserusername display_nameavatar_cache_busterTimenowto_iJ4-/W.8classs containerdivE4-/W.8classscarddivÒ^4-/W.-/''--/'%/W. VVW. 8 classsheaderdivstatemessageis_errorerrorsuccessfallbacksuspense~04-/W.V-/W. 8classstitleh1onclick back_buttonbutton) 4Q8SettingsQ4/Q/8/chat Funicularrouternavigate( 4W.8span0 4Q8<- Back to Chat( 4W.8span44-/8statemessageR4-/W.8classsloading_containerdivM4-/-8classsloading_spinnerdivS4-/W.8classserrormessagediv( 4W.8span9 4Q8Failed to load user datat !4-/W.!8user on_submit handle_saveclasssformform_forÍ W4W.W.W.-/'Q%Q--/'%//8 Saving... Save Changesdivstatesavingclasssnormal submit_buttonsubmitˆ ,4!/!-//!8usernamelabeldisabledclasssinput_disabled text_field†*4!Q/!-//8 Display Name display_namelabelclasssinput text_field^ 4-/W.-/'-/W.%-/'-/W.!  Q Q   - / /A8 avatar-inputimage/*classslabelstateavatar_previewavatar_containerdiv current_user has_avataravataridacceptonchangehandle_avatar_changeinput file_field' 4Q8Avatarn 4-/-/- 8srcstateavatar_previewclasssavatarimg´44Q-/RQR-/R-/- 8/users/ /avatar?t= src current_useridstateavatar_cache_busterclasssavatarimgQ4QW08app Funicular containerstart‡ ~4QQ/!QQ/!QQ/!QQ/!QQ /!Q/8 /loginlogin/chat/:channel_id chat_channel/chatchat /settingssettings/messages/:message_idmessage toLoginComponentasget ChatComponentSettingsComponentMessageComponentdelete set_defaultLVAR(+usernamepasswordblockusererrorparamschannelsselected_channelchchannelnew_pathconsumerdatamessageseventcontentformsuccess message_idupdated_messagesm is_activeis_current_user avatar_urlresponsepathmethod containermessage is_disabledfresolverejectfile preview_url display_name had_avatarresulturlfields error_msgerouterÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ!"ÿÿ ÿÿ#ÿÿ$%ÿÿ#ÿÿ&'%ÿÿ%ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*ÿÿEND