diff --git a/cmake/backend/emscripten.cmake b/cmake/backend/emscripten.cmake index 7f93cb3..8057ab8 100644 --- a/cmake/backend/emscripten.cmake +++ b/cmake/backend/emscripten.cmake @@ -134,6 +134,7 @@ function(nui_add_emscripten_target) ${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_CMAKE_OPTIONS} "-DNUI_NPM=${NUI_NPM}" "-DNUI_NODE=${NUI_NODE}" + "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" -DNUI_INLINE_EXTRACTOR_TARGET_FILE=$ -DNUI_INLINE_INJECTOR_TARGET_FILE=$ -DNUI_MODULE_BUILD_DIR=${CMAKE_BINARY_DIR}/module_${NUI_ADD_EMSCRIPTEN_TARGET_ARGS_TARGET} diff --git a/cmake/frontend/emscripten.cmake b/cmake/frontend/emscripten.cmake index 7b08234..219eb9f 100644 --- a/cmake/frontend/emscripten.cmake +++ b/cmake/frontend/emscripten.cmake @@ -1,7 +1,7 @@ function(nui_prepare_emscripten_target) cmake_parse_arguments( NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS - "NO_INLINE;NO_INLINE_INJECT" + "NO_INLINE;NO_INLINE_INJECT;LEAN_INDEX_HTML" "TARGET;PREJS;STATIC;UNPACKED_MODE" "EMSCRIPTEN_LINK_OPTIONS;EMSCRIPTEN_COMPILE_OPTIONS;PARCEL_ARGS;NPM_INSTALL_ARGS" ${ARGN} @@ -23,11 +23,16 @@ function(nui_prepare_emscripten_target) set(NUI_DEFER_INLINE_SCRIPTS_TAG "defer") endif() + set(NUI_LEAN_HTML "nolean") + if (NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_LEAN_INDEX_HTML) + set(NUI_LEAN_HTML "lean") + endif() + set(INLINER_COMMAND "") - if (NOT NO_INLINE) + if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_NO_INLINE) nui_enable_inline(TARGET ${NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_TARGET} RELATIVE_TO ${CMAKE_CURRENT_SOURCE_DIR}) - if (NOT NO_INLINE_INJECT) - set(INLINER_COMMAND COMMAND ${NUI_INLINE_INJECTOR_TARGET_FILE} "${CMAKE_BINARY_DIR}/static/index.html" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.js" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.css" ${NUI_DEFER_INLINE_SCRIPTS_TAG}) + if (NOT NUI_PREPARE_EMSCRIPTEN_TARGET_ARGS_NO_INLINE_INJECT) + set(INLINER_COMMAND COMMAND ${NUI_INLINE_INJECTOR_TARGET_FILE} "${CMAKE_BINARY_DIR}/static/index.html" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.js" "${CMAKE_BINARY_DIR}/nui-inline/inline_imports.css" ${NUI_DEFER_INLINE_SCRIPTS_TAG} ${NUI_LEAN_HTML}) endif() endif() diff --git a/nui/include/nui/event_system/listen.hpp b/nui/include/nui/event_system/listen.hpp index c2f5e82..c87c281 100644 --- a/nui/include/nui/event_system/listen.hpp +++ b/nui/include/nui/event_system/listen.hpp @@ -72,4 +72,16 @@ namespace Nui { return listen(eventContext, obs, std::function(std::move(onEvent))); } + + template + void listen(std::shared_ptr> const& obs, FunctionT onEvent) + { + return listen(globalEventContext, obs, std::function(std::move(onEvent))); + } + + template + void listen(Observed const& obs, FunctionT onEvent) + { + return listen(globalEventContext, obs, std::function(std::move(onEvent))); + } } \ No newline at end of file diff --git a/nui/include/nui/event_system/observed_value.hpp b/nui/include/nui/event_system/observed_value.hpp index c9cae00..4291ef3 100644 --- a/nui/include/nui/event_system/observed_value.hpp +++ b/nui/include/nui/event_system/observed_value.hpp @@ -15,6 +15,7 @@ #include #include #include +#include namespace Nui { @@ -1286,7 +1287,7 @@ namespace Nui : observed_{&observed} {} - inline T value() const + inline T const& value() const { return observed_->value(); } diff --git a/nui/test/nui/CMakeLists.txt b/nui/test/nui/CMakeLists.txt index 1aad13a..4e10955 100644 --- a/nui/test/nui/CMakeLists.txt +++ b/nui/test/nui/CMakeLists.txt @@ -5,7 +5,7 @@ add_library(nui-frontend-mocked STATIC ${NUI_FRONTEND_SOURCES}) target_include_directories(nui-frontend-mocked PUBLIC emscripten_mock ${CMAKE_CURRENT_LIST_DIR}/../../include) -find_package(Boost REQUIRED) +find_package(Boost CONFIG REQUIRED) target_link_libraries(nui-frontend-mocked PUBLIC libcpppre diff --git a/tools/inline_injector/main.cpp b/tools/inline_injector/main.cpp index 12e346e..7089d28 100644 --- a/tools/inline_injector/main.cpp +++ b/tools/inline_injector/main.cpp @@ -21,11 +21,11 @@ std::string readFile(const std::filesystem::path& path) int main(int argc, char** argv) { - if (argc != 5) + if (argc != 6) { - std::cout - << "Expected 4 argument: , but got " - << argc - 1 << "\n"; + std::cout << "Expected 4 argument: " + ", but got " + << argc - 1 << "\n"; return 1; } @@ -33,6 +33,7 @@ int main(int argc, char** argv) const auto importScripts = std::filesystem::path{argv[2]}; const auto importStyles = std::filesystem::path{argv[3]}; const auto importScriptsDefer = std::string{argv[4]} == "defer" ? true : false; + const auto leanHtml = std::string{argv[5]} == "lean" ? true : false; std::string indexHtml; try @@ -57,8 +58,17 @@ int main(int argc, char** argv) relativeImportScriptsFile.generic_string() + "\";\n\t\n"; const std::string importStylesHtml = "\t\n"; - const std::string importBinIndexHtml = - "\t\n"; + + std::string importBinIndexHtml; + if (!leanHtml) + { + importBinIndexHtml = + "\t\n"; + } + else + { + importBinIndexHtml = "\t\n"; + } // find end of header from behind in indexHtml: auto headEnd = indexHtml.rfind("");