import Crafter.CppDOM; using namespace Crafter; import std; // Create the main container element HtmlElementView* body = new HtmlElementView("body", "
" "

Enhanced Event Handling Demo

" "
" "
" "

Mouse Events

" "" "
" "
" "
" "

Keyboard Events

" "" "
" "
" "
" "

Focus Events

" "" "
" "
" "
" "

Form Events

" "
" "" "" "" "
" "
" "
" "
" "

Window Events

" "
" "
" "
" "

Drag & Drop Events

" "
Drag Me!
" "
Drop Here
" "
" "
" "
" "

Wheel Events

" "
Scroll here
" "
" "
" "
" "
"); // Get references to elements HtmlElementView* mouseButton = new HtmlElementView("mouseButton"); HtmlElementView* mouseOutput = new HtmlElementView("mouseOutput"); HtmlElementView* keyInput = new HtmlElementView("keyInput"); HtmlElementView* keyOutput = new HtmlElementView("keyOutput"); HtmlElementView* focusInput = new HtmlElementView("focusInput"); HtmlElementView* focusOutput = new HtmlElementView("focusOutput"); HtmlElementView* formInput = new HtmlElementView("formInput"); HtmlElementView* formSelect = new HtmlElementView("formSelect"); HtmlElementView* formElement = new HtmlElementView("formElement"); HtmlElementView* formOutput = new HtmlElementView("formOutput"); HtmlElementView* windowOutput = new HtmlElementView("windowOutput"); HtmlElementView* dragSource = new HtmlElementView("dragSource"); HtmlElementView* dropTarget = new HtmlElementView("dropTarget"); HtmlElementView* dragOutput = new HtmlElementView("dragOutput"); HtmlElementView* wheelContainer = new HtmlElementView("wheelContainer"); HtmlElementView* wheelOutput = new HtmlElementView("wheelOutput"); int main() { // Mouse Events mouseButton->AddClickListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("

Click: X={}, Y={}

", event.clientX, event.clientY)); }); mouseButton->AddMouseOverListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("

Mouse Over: X={}, Y={}

", event.clientX, event.clientY)); }); mouseButton->AddMouseOutListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("

Mouse Out: X={}, Y={}

", event.clientX, event.clientY)); }); mouseButton->AddMouseMoveListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("

Mouse Move: X={}, Y={}

", event.clientX, event.clientY)); }); mouseButton->AddMouseDownListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("

Mouse Down: Button={}, X={}, Y={}

", event.button, event.clientX, event.clientY)); }); mouseButton->AddMouseUpListener([&](MouseEvent event) { mouseOutput->SetInnerHTML(std::format("

Mouse Up: Button={}, X={}, Y={}

", event.button, event.clientX, event.clientY)); }); // Keyboard Events keyInput->AddKeyDownListener([&](KeyboardEvent event) { std::string keyInfo = std::format("

Key Down: Key='{}', Code={}, Ctrl={}, Shift={}, Alt={}

", event.key, event.keyCode, event.ctrlKey, event.shiftKey, event.altKey); keyOutput->SetInnerHTML(keyInfo); }); keyInput->AddKeyUpListener([&](KeyboardEvent event) { std::string keyInfo = std::format("

Key Up: Key='{}', Code={}, Ctrl={}, Shift={}, Alt={}

", event.key, event.keyCode, event.ctrlKey, event.shiftKey, event.altKey); keyOutput->SetInnerHTML(keyInfo); }); keyInput->AddKeyPressListener([&](KeyboardEvent event) { std::string keyInfo = std::format("

Key Press: Key='{}', Code={}, Ctrl={}, Shift={}, Alt={}

", event.key, event.keyCode, event.ctrlKey, event.shiftKey, event.altKey); keyOutput->SetInnerHTML(keyInfo); }); // Focus Events focusInput->AddFocusListener([&](FocusEvent event) { focusOutput->SetInnerHTML("

Focus: Element gained focus

"); }); focusInput->AddBlurListener([&](FocusEvent event) { focusOutput->SetInnerHTML("

Blur: Element lost focus

"); }); // Form Events formInput->AddInputListener([&](InputEvent event) { formOutput->SetInnerHTML(std::format("

Input: Value='{}'

", event.data)); }); formInput->AddChangeListener([&](ChangeEvent event) { formOutput->SetInnerHTML(std::format("

Change: Value='{}'

", event.value)); }); formSelect->AddChangeListener([&](ChangeEvent event) { formOutput->SetInnerHTML(std::format("

Select Change: Value='{}'

", event.value)); }); // Submit Event formElement->AddSubmitListener([&]() { formOutput->SetInnerHTML("

Submit: Form submitted successfully!

"); }); // Window Events // Resize event body->AddResizeListener([&](ResizeEvent event) { windowOutput->SetInnerHTML(std::format("

Resize: Width={}, Height={}

", event.width, event.height)); }); // Scroll event body->AddScrollListener([&](ScrollEvent event) { windowOutput->SetInnerHTML(std::format("

Scroll: X={}, Y={}

", event.scrollX, event.scrollY)); }); // Context Menu Event body->AddContextMenuListener([&](MouseEvent event) { windowOutput->SetInnerHTML(std::format("

Context Menu: X={}, Y={}

", event.clientX, event.clientY)); }); // Drag and Drop Events dragSource->AddDragStartListener([&](MouseEvent event) { dragOutput->SetInnerHTML("

Drag Start: Dragging started

"); }); dragSource->AddDragEndListener([&](MouseEvent event) { dragOutput->SetInnerHTML("

Drag End: Dragging ended

"); }); dropTarget->AddDragOverListener([&](MouseEvent event) { dragOutput->SetInnerHTML("

Drag Over: Dragging over drop target

"); }); dropTarget->AddDragEnterListener([&](MouseEvent event) { dragOutput->SetInnerHTML("

Drag Enter: Drag entered drop target

"); }); dropTarget->AddDragLeaveListener([&](MouseEvent event) { dragOutput->SetInnerHTML("

Drag Leave: Drag left drop target

"); }); dropTarget->AddDropListener([&](MouseEvent event) { dragOutput->SetInnerHTML("

Drop: Item dropped

"); }); // Wheel Event wheelContainer->AddWheelListener([&](WheelEvent event) { wheelOutput->SetInnerHTML(std::format("

Wheel: DeltaX={}, DeltaY={}, DeltaZ={}

", event.deltaX, event.deltaY, event.deltaZ)); }); return 0; }