\n {interacting && (\n
\n )}\n
\n {efforts.map((effort, index) => (\n \n ))}\n
\n
{\n dragging.current = true;\n dragStartFrame.current = frame;\n setInteracting(true);\n }}\n onInput={(event) => {\n dragging.current = true;\n const next = Number(event.currentTarget.value);\n setFrame(next);\n presenter.setFrame(next);\n }}\n onPointerUp={(event) => {\n setInteracting(false);\n void commit(Number(event.currentTarget.value));\n }}\n onPointerCancel={() => {\n setInteracting(false);\n dragging.current = false;\n setFrame(dragStartFrame.current);\n presenter.setFrame(dragStartFrame.current);\n }}\n onKeyUp={(event) => {\n setInteracting(false);\n if (event.key !== \"Escape\") void commit(Number(event.currentTarget.value));\n }}\n onBlur={(event) => {\n setInteracting(false);\n if (dragging.current) void commit(Number(event.currentTarget.value));\n }}\n onKeyDown={(event) => {\n setInteracting(true);\n if (event.key === \"Escape\" && !pending) {\n setInteracting(false);\n dragging.current = false;\n setFrame(dragStartFrame.current);\n presenter.setFrame(dragStartFrame.current);\n }\n }}\n />\n
\n );\n}\n\ntype AppearanceChoice = NativeThemeId | \"system\" | \"liang\";\n\nconst APPEARANCE_CHOICES: readonly { id: AppearanceChoice; labelKey: string }[] = [\n { id: \"light\", labelKey: \"appearance.light\" },\n { id: \"dark\", labelKey: \"appearance.dark\" },\n { id: \"system\", labelKey: \"appearance.system\" },\n { id: \"liang\", labelKey: \"appearance.liang\" },\n];\n\nfunction NativeAppearanceIcon({ id }: { id: Exclude