(props: BlockFrameProps)
| 92 | }); |
| 93 | |
| 94 | const BlockFrame_Default_Component = (props: BlockFrameProps) => { |
| 95 | const waveEnv = useWaveEnv<BlockEnv>(); |
| 96 | const { nodeModel, viewModel, blockModel, preview, numBlocksInTab, children } = props; |
| 97 | const isFocused = jotai.useAtomValue(nodeModel.isFocused); |
| 98 | const aiPanelVisible = jotai.useAtomValue(WorkspaceLayoutModel.getInstance().panelVisibleAtom); |
| 99 | const metaView = jotai.useAtomValue(waveEnv.getBlockMetaKeyAtom(nodeModel.blockId, "view")); |
| 100 | const viewIconUnion = util.useAtomValueSafe(viewModel?.viewIcon) ?? blockViewToIcon(metaView); |
| 101 | const customBg = util.useAtomValueSafe(viewModel?.blockBg); |
| 102 | const manageConnection = util.useAtomValueSafe(viewModel?.manageConnection); |
| 103 | const changeConnModalAtom = useBlockAtom(nodeModel.blockId, "changeConn", () => { |
| 104 | return jotai.atom(false); |
| 105 | }) as jotai.PrimitiveAtom<boolean>; |
| 106 | const connModalOpen = jotai.useAtomValue(changeConnModalAtom); |
| 107 | const isMagnified = jotai.useAtomValue(nodeModel.isMagnified); |
| 108 | const isEphemeral = jotai.useAtomValue(nodeModel.isEphemeral); |
| 109 | const [magnifiedBlockBlurAtom] = React.useState(() => |
| 110 | waveEnv.getSettingsKeyAtom("window:magnifiedblockblurprimarypx") |
| 111 | ); |
| 112 | const magnifiedBlockBlur = jotai.useAtomValue(magnifiedBlockBlurAtom); |
| 113 | const [magnifiedBlockOpacityAtom] = React.useState(() => |
| 114 | waveEnv.getSettingsKeyAtom("window:magnifiedblockopacity") |
| 115 | ); |
| 116 | const magnifiedBlockOpacity = jotai.useAtomValue(magnifiedBlockOpacityAtom); |
| 117 | const connBtnRef = React.useRef<HTMLDivElement>(null); |
| 118 | const connName = jotai.useAtomValue(waveEnv.getBlockMetaKeyAtom(nodeModel.blockId, "connection")); |
| 119 | const iconColor = jotai.useAtomValue(waveEnv.getBlockMetaKeyAtom(nodeModel.blockId, "icon:color")); |
| 120 | const noHeader = util.useAtomValueSafe(viewModel?.noHeader); |
| 121 | |
| 122 | React.useEffect(() => { |
| 123 | if (!manageConnection) { |
| 124 | return; |
| 125 | } |
| 126 | const bcm = getBlockComponentModel(nodeModel.blockId); |
| 127 | if (bcm != null) { |
| 128 | bcm.openSwitchConnection = () => { |
| 129 | globalStore.set(changeConnModalAtom, true); |
| 130 | }; |
| 131 | } |
| 132 | return () => { |
| 133 | const bcm = getBlockComponentModel(nodeModel.blockId); |
| 134 | if (bcm != null) { |
| 135 | bcm.openSwitchConnection = null; |
| 136 | } |
| 137 | }; |
| 138 | }, [manageConnection]); |
| 139 | React.useEffect(() => { |
| 140 | // on mount, if manageConnection, call ConnEnsure |
| 141 | if (!manageConnection || preview) { |
| 142 | return; |
| 143 | } |
| 144 | if (!util.isLocalConnName(connName)) { |
| 145 | console.log("ensure conn", nodeModel.blockId, connName); |
| 146 | waveEnv.rpc |
| 147 | .ConnEnsureCommand( |
| 148 | TabRpcClient, |
| 149 | { connname: connName, logblockid: nodeModel.blockId }, |
| 150 | { timeout: 60000 } |
| 151 | ) |
nothing calls this directly
no test coverage detected