| 
    <x-slot name="header"><h2 class="font-semibold text-xl text-gray-800 leading-tight">
 {{ $room->name }}
 </h2>
 </x-slot>
 
 <div class="py-12">
 <div class="max-w-7xl mx-auto sm:px-6 lg:px-8 grid grid-cols-12 gap-6">
 <livewire:chat.users :room="$room" />
 
 
 <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg col-span-9">
 <div class="p-6 text-gray-900">
 <livewire:chat.messages :room="$room" />
 
 <form class="mt-3">
 <label for="body" class="sr-only">Message</label>
 <textarea name="body" id="body" rows="4"
 class="border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm w-full"
 placeholder="Say something" wire:model="body" x-data="{
 shift: false,
 typingTimeout: null,
 handleTypingFinished() {
 Echo.private('chat.room.{{ $room->id }}')
 .whisper('not-typing', {
 id: {{ auth()->id() }}
 })
 
 clearTimeout(this.typingTimeout)
 }
 }" x-on:keydown.shift="shift = true"
 x-on:keyup.shift="shift = false"
 x-on:keydown.enter="if (!shift || !$event.target.value) { $event.preventDefault() }"
 x-on:keyup.enter.prevent="if (!shift && $event.target.value) { $wire.submit(); handleTypingFinished() }"
 x-on:keydown="
 clearTimeout(typingTimeout)
 
 Echo.private('chat.room.{{ $room->id }}')
 .whisper('typing', {
 id: {{ auth()->id() }}
 })
 
 typingTimeout = setTimeout(handleTypingFinished, 3000)
 "></textarea>
 </form>
 </div>
 </div>
 </div>
 </div>
 
 |