From adb1bd620adec16bb7dbb8b17053cd6277f62de9 Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Fri, 13 Jun 2025 09:59:07 +1000 Subject: [PATCH] [Examples/clay-official-website] Fix links on official website example --- .../build/clay/index.html | 30 +++++++++++++++--- .../build/clay/index.wasm | Bin 125555 -> 125721 bytes examples/clay-official-website/index.html | 29 ++++++++++++++--- examples/clay-official-website/main.c | 27 +++++++++++----- 4 files changed, 68 insertions(+), 18 deletions(-) diff --git a/examples/clay-official-website/build/clay/index.html b/examples/clay-official-website/build/clay/index.html index f68b2d1..2cbf9ce 100644 --- a/examples/clay-official-website/build/clay/index.html +++ b/examples/clay-official-website/build/clay/index.html @@ -166,6 +166,7 @@ { name: 'link', ...stringDefinition }, { name: 'cursorPointer', type: 'uint8_t' }, { name: 'disablePointerEvents', type: 'uint8_t' }, + { name: 'padding', type: 'uint16_t'} ]}; let renderCommandDefinition = { name: 'Clay_RenderCommand', @@ -425,10 +426,13 @@ if (!elementCache[renderCommand.id.value]) { let elementType = 'div'; switch (renderCommand.commandType.value & 0xff) { + case CLAY_RENDER_COMMAND_TYPE_TEXT: case CLAY_RENDER_COMMAND_TYPE_RECTANGLE: { - // if (readStructAtAddress(renderCommand.renderData.rectangle.value, rectangleRenderDataDefinition).link.length.value > 0) { TODO reimplement links - // elementType = 'a'; - // } + if (renderCommand.userData.value !== 0) { + if (readStructAtAddress(renderCommand.userData.value, customHTMLDataDefinition).link.length.value > 0) { + elementType = 'a'; + } + } break; } case CLAY_RENDER_COMMAND_TYPE_IMAGE: { @@ -549,7 +553,6 @@ } case (CLAY_RENDER_COMMAND_TYPE_TEXT): { let config = renderCommand.renderData.text; - let customData = readStructAtAddress(renderCommand.userData.value, customHTMLDataDefinition); let configMemory = JSON.stringify(config); let stringContents = new Uint8Array(memoryDataView.buffer.slice(config.stringContents.chars.value, config.stringContents.chars.value + config.stringContents.length.value)); if (configMemory !== elementData.previousMemoryConfig) { @@ -559,7 +562,24 @@ element.style.color = `rgba(${textColor.r.value}, ${textColor.g.value}, ${textColor.b.value}, ${textColor.a.value})`; element.style.fontFamily = fontsById[config.fontId.value]; element.style.fontSize = fontSize + 'px'; - element.style.pointerEvents = customData.disablePointerEvents.value ? 'none' : 'all'; + if (renderCommand.userData.value !== 0) { + let customData = readStructAtAddress(renderCommand.userData.value, customHTMLDataDefinition); + console.log(customData.disablePointerEvents.value); + element.style.pointerEvents = customData.disablePointerEvents.value ? 'none' : 'all'; + let linkContents = customData.link.length.value > 0 ? textDecoder.decode(new Uint8Array(memoryDataView.buffer.slice(customData.link.chars.value, customData.link.chars.value + customData.link.length.value))) : 0; + memoryDataView.setUint32(0, renderCommand.id.value, true); + if (linkContents.length > 0 && (window.mouseDownThisFrame || window.touchDown) && instance.exports.Clay_PointerOver(0)) { + window.location.href = linkContents; + } + if (linkContents.length > 0) { + element.href = linkContents; + } + + if (linkContents.length > 0 || customData.cursorPointer.value) { + element.style.pointerEvents = 'all'; + element.style.cursor = 'pointer'; + } + } elementData.previousMemoryConfig = configMemory; } if (stringContents.length !== elementData.previousMemoryText.length || MemoryIsDifferent(stringContents, elementData.previousMemoryText, stringContents.length)) { diff --git a/examples/clay-official-website/build/clay/index.wasm b/examples/clay-official-website/build/clay/index.wasm index 32882f581c96b669352d78dc32885dc5121b3d05..c42e12183d49b804b633d868422dd293a8d3a9e1 100755 GIT binary patch delta 21519 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 delta 21116 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 0) { TODO reimplement links - // elementType = 'a'; - // } + if (renderCommand.userData.value !== 0) { + if (readStructAtAddress(renderCommand.userData.value, customHTMLDataDefinition).link.length.value > 0) { + elementType = 'a'; + } + } break; } case CLAY_RENDER_COMMAND_TYPE_IMAGE: { @@ -549,7 +553,6 @@ } case (CLAY_RENDER_COMMAND_TYPE_TEXT): { let config = renderCommand.renderData.text; - let customData = readStructAtAddress(renderCommand.userData.value, customHTMLDataDefinition); let configMemory = JSON.stringify(config); let stringContents = new Uint8Array(memoryDataView.buffer.slice(config.stringContents.chars.value, config.stringContents.chars.value + config.stringContents.length.value)); if (configMemory !== elementData.previousMemoryConfig) { @@ -559,7 +562,23 @@ element.style.color = `rgba(${textColor.r.value}, ${textColor.g.value}, ${textColor.b.value}, ${textColor.a.value})`; element.style.fontFamily = fontsById[config.fontId.value]; element.style.fontSize = fontSize + 'px'; - element.style.pointerEvents = customData.disablePointerEvents.value ? 'none' : 'all'; + if (renderCommand.userData.value !== 0) { + let customData = readStructAtAddress(renderCommand.userData.value, customHTMLDataDefinition); + element.style.pointerEvents = customData.disablePointerEvents.value ? 'none' : 'all'; + let linkContents = customData.link.length.value > 0 ? textDecoder.decode(new Uint8Array(memoryDataView.buffer.slice(customData.link.chars.value, customData.link.chars.value + customData.link.length.value))) : 0; + memoryDataView.setUint32(0, renderCommand.id.value, true); + if (linkContents.length > 0 && (window.mouseDownThisFrame || window.touchDown) && instance.exports.Clay_PointerOver(0)) { + window.location.href = linkContents; + } + if (linkContents.length > 0) { + element.href = linkContents; + } + + if (linkContents.length > 0 || customData.cursorPointer.value) { + element.style.pointerEvents = 'all'; + element.style.cursor = 'pointer'; + } + } elementData.previousMemoryConfig = configMemory; } if (stringContents.length !== elementData.previousMemoryText.length || MemoryIsDifferent(stringContents, elementData.previousMemoryText, stringContents.length)) { diff --git a/examples/clay-official-website/main.c b/examples/clay-official-website/main.c index 3064c66..efe0a35 100644 --- a/examples/clay-official-website/main.c +++ b/examples/clay-official-website/main.c @@ -44,7 +44,7 @@ typedef struct { Arena frameArena = {}; -typedef struct { +typedef struct d { Clay_String link; bool cursorPointer; bool disablePointerEvents; @@ -345,11 +345,18 @@ Clay_RenderCommandArray CreateLayout(bool mobileScreen, float lerpValue) { CLAY_TEXT(CLAY_STRING("Clay"), &headerTextConfig); CLAY({ .id = CLAY_ID("Spacer"), .layout = { .sizing = { .width = CLAY_SIZING_GROW(0) } } }) {} if (!mobileScreen) { - CLAY({ .id = CLAY_ID("LinkExamplesOuter"), .layout = { .padding = {8, 8} }, .userData = FrameAllocateCustomData((CustomHTMLData) { .link = CLAY_STRING("https://github.com/nicbarker/clay/tree/main/examples") }) }) { - CLAY_TEXT(CLAY_STRING("Examples"), CLAY_TEXT_CONFIG({ .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); + CLAY({ .id = CLAY_ID("LinkExamplesOuter"), .layout = { .padding = {8, 8} } }) { + CLAY_TEXT(CLAY_STRING("Examples"), CLAY_TEXT_CONFIG({ + .userData = FrameAllocateCustomData((CustomHTMLData) { + .link = CLAY_STRING("https://github.com/nicbarker/clay/tree/main/examples") + }), + .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); } - CLAY({ .id = CLAY_ID("LinkDocsOuter"), .layout = { .padding = {8, 8} }, .userData = FrameAllocateCustomData((CustomHTMLData) { .link = CLAY_STRING("https://github.com/nicbarker/clay/blob/main/README.md") }) }) { - CLAY_TEXT(CLAY_STRING("Docs"), CLAY_TEXT_CONFIG({ .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); + CLAY({ .id = CLAY_ID("LinkDocsOuter"), .layout = { .padding = {8, 8} } }) { + CLAY_TEXT(CLAY_STRING("Docs"), CLAY_TEXT_CONFIG({ + .userData = FrameAllocateCustomData((CustomHTMLData) { .link = CLAY_STRING("https://github.com/nicbarker/clay/blob/main/README.md") }), + .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} }) + ); } } CLAY({ @@ -357,9 +364,11 @@ Clay_RenderCommandArray CreateLayout(bool mobileScreen, float lerpValue) { .backgroundColor = Clay_Hovered() ? COLOR_LIGHT_HOVER : COLOR_LIGHT, .border = { .width = {2, 2, 2, 2}, .color = COLOR_RED }, .cornerRadius = CLAY_CORNER_RADIUS(10), - .userData = FrameAllocateCustomData((CustomHTMLData) { .link = CLAY_STRING("https://github.com/nicbarker/clay/tree/main/examples") }), + .userData = FrameAllocateCustomData((CustomHTMLData) { .link = CLAY_STRING("https://discord.gg/b4FTWkxdvT") }), }) { - CLAY_TEXT(CLAY_STRING("Discord"), CLAY_TEXT_CONFIG({ .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); + CLAY_TEXT(CLAY_STRING("Discord"), CLAY_TEXT_CONFIG({ + .userData = FrameAllocateCustomData((CustomHTMLData) { .disablePointerEvents = true }), + .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); } CLAY({ .layout = { .padding = {16, 16, 6, 6} }, @@ -368,7 +377,9 @@ Clay_RenderCommandArray CreateLayout(bool mobileScreen, float lerpValue) { .cornerRadius = CLAY_CORNER_RADIUS(10), .userData = FrameAllocateCustomData((CustomHTMLData) { .link = CLAY_STRING("https://github.com/nicbarker/clay") }), }) { - CLAY_TEXT(CLAY_STRING("Github"), CLAY_TEXT_CONFIG({ .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); + CLAY_TEXT(CLAY_STRING("Github"), CLAY_TEXT_CONFIG({ + .userData = FrameAllocateCustomData((CustomHTMLData) { .disablePointerEvents = true }), + .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {61, 26, 5, 255} })); } } Clay_LayoutConfig topBorderConfig = (Clay_LayoutConfig) { .sizing = { CLAY_SIZING_GROW(0), CLAY_SIZING_FIXED(4) }};