package memtrace_viewer
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Interactive memory profiler based on Memtrace
Install
dune-project
Dependency
Authors
Maintainers
Sources
v0.17.0.tar.gz
sha256=0d9b7ddf94f9cf090930a36468abd4f4ca40c5618ec02dbbc6fd47fb0572433d
doc/src/memtrace_viewer.client/app_state.ml.html
Source file app_state.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56open! Core open Bonsai_web open Memtrace_viewer_common module Default_selection = struct type t = | First_caller | First_callee | No_selection [@@deriving sexp, equal] end module State = struct type t = { focus_backtrace : Data.Backtrace.t } [@@deriving sexp, equal] let default = let focus_backtrace = [ Data.Location.toplevel ] in { focus_backtrace } ;; let focus ~trie t = match Data.Fragment_trie.find trie t.focus_backtrace with | None -> Data.Fragment_trie.empty_fragment trie | Some focus -> focus ;; end type t = { focus : Data.Fragment.t ; set_focus : Data.Fragment.t -> default_selection:Default_selection.t -> reset_selection: (Data.Fragment.t -> default_selection:Default_selection.t -> unit Effect.t) -> unit Effect.t } let component ~trie = let open Bonsai.Let_syntax in let%sub state, set_state = Bonsai.state State.default ~equal:[%equal: State.t] in let focus = let%map state = state and trie = trie in State.focus ~trie state in let set_focus = let%map set_state = set_state in fun new_focus ~default_selection ~reset_selection -> let focus_backtrace = Data.Fragment.backtrace new_focus in Effect.Many [ set_state { focus_backtrace }; reset_selection new_focus ~default_selection ] in let%arr focus = focus and set_focus = set_focus in { focus; set_focus } ;;
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>