// Portions of this file are Copyright 2021 Google LLC, and licensed under GPL2+. See COPYING. import React, { CSSProperties, useContext, useRef, useState } from 'react'; import Editor, { loader, Monaco } from '@monaco-editor/react'; import openscadEditorOptions from '../language/openscad-editor-options'; import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; import { InputTextarea } from 'primereact/inputtextarea'; import { Button } from 'primereact/button'; import { MenuItem } from 'primereact/menuitem'; import { Menu } from 'primereact/menu'; import { buildUrlForStateParams } from '../state/fragment-state'; import { blankProjectState, defaultSourcePath } from '../state/initial-state'; import { ModelContext, FSContext } from './contexts'; import FilePicker, { } from './FilePicker'; // const isMonacoSupported = false; const isMonacoSupported = (() => { const ua = window.navigator.userAgent; const iosWk = ua.match(/iPad|iPhone/i) && ua.match(/WebKit/i); return !iosWk; })(); let monacoInstance: Monaco | null = null; if (isMonacoSupported) { loader.init().then(mi => monacoInstance = mi); } export default function EditorPanel({className, style}: {className?: string, style?: CSSProperties}) { const model = useContext(ModelContext); if (!model) throw new Error('No model'); const menu = useRef