2023-09-29 16:01:27 +02:00
|
|
|
// __SDEFILE__ - This file is a dependency for the stand-alone environment
|
2023-06-15 09:23:49 +02:00
|
|
|
import { useState } from 'react'
|
|
|
|
import { InspectorPattern } from './inspector/pattern.mjs'
|
|
|
|
import { DraftMenu, ns as menuNs } from './menu.mjs'
|
2023-09-15 16:59:02 +02:00
|
|
|
import { objUpdate, nsMerge } from 'shared/utils.mjs'
|
2023-06-23 17:45:50 -05:00
|
|
|
import { PatternWithMenu, ns as wrapperNs } from '../pattern-with-menu.mjs'
|
2023-09-15 16:59:02 +02:00
|
|
|
import { DraftHeader, ns as headerNs } from '../draft/header.mjs'
|
2023-06-15 09:23:49 +02:00
|
|
|
|
2023-09-15 16:59:02 +02:00
|
|
|
export const ns = nsMerge(menuNs, wrapperNs, headerNs)
|
2023-06-15 09:23:49 +02:00
|
|
|
|
2023-06-18 10:51:13 +02:00
|
|
|
export const InspectView = ({
|
2023-06-15 09:23:49 +02:00
|
|
|
design,
|
|
|
|
pattern,
|
|
|
|
patternConfig,
|
|
|
|
settings,
|
2023-06-23 17:45:50 -05:00
|
|
|
setSettings,
|
2023-06-15 09:23:49 +02:00
|
|
|
ui,
|
|
|
|
update,
|
|
|
|
language,
|
|
|
|
account,
|
|
|
|
setView,
|
|
|
|
view,
|
|
|
|
}) => {
|
|
|
|
// State for inspector
|
|
|
|
const [inspect, setInspect] = useState({
|
|
|
|
show: {},
|
|
|
|
reveal: {},
|
|
|
|
})
|
|
|
|
|
|
|
|
const inspector = {
|
|
|
|
show: (data) => {
|
|
|
|
const newInspect = { ...inspect }
|
|
|
|
newInspect.show[data.id] = data
|
|
|
|
setInspect(newInspect)
|
|
|
|
},
|
|
|
|
hide: (id) => {
|
|
|
|
const newInspect = { ...inspect }
|
|
|
|
delete newInspect.show[id]
|
|
|
|
delete newInspect.reveal[id]
|
|
|
|
setInspect(newInspect)
|
|
|
|
},
|
|
|
|
reveal: (id) => {
|
|
|
|
const newInspect = { ...inspect }
|
|
|
|
if (newInspect.reveal[id]) delete newInspect.reveal[id]
|
|
|
|
else newInspect.reveal[id] = 1
|
|
|
|
setInspect(newInspect)
|
|
|
|
},
|
|
|
|
update: (path, val) => {
|
|
|
|
const newInspect = objUpdate({ ...inspect }, path, val)
|
|
|
|
setInspect(newInspect)
|
|
|
|
},
|
|
|
|
data: inspect,
|
|
|
|
pattern: pattern,
|
|
|
|
}
|
|
|
|
|
|
|
|
let output = null
|
|
|
|
let renderProps = false
|
|
|
|
if (ui.renderer === 'svg') {
|
|
|
|
try {
|
|
|
|
const __html = pattern.render()
|
|
|
|
output = <div dangerouslySetInnerHTML={{ __html }} />
|
|
|
|
} catch (err) {
|
|
|
|
console.log(err)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
renderProps = pattern.getRenderProps()
|
2023-06-18 10:51:13 +02:00
|
|
|
output = <InspectorPattern {...{ renderProps, inspector }} />
|
2023-06-15 09:23:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
2023-06-23 17:45:50 -05:00
|
|
|
<PatternWithMenu
|
|
|
|
{...{
|
|
|
|
settings,
|
|
|
|
ui,
|
|
|
|
update,
|
|
|
|
control: account.control,
|
2023-08-28 16:55:23 +02:00
|
|
|
account,
|
|
|
|
design,
|
2023-06-23 17:45:50 -05:00
|
|
|
setSettings,
|
|
|
|
pattern: output,
|
2023-09-15 16:59:02 +02:00
|
|
|
Header: DraftHeader,
|
2023-06-23 17:45:50 -05:00
|
|
|
menu: (
|
2023-08-27 16:24:18 +02:00
|
|
|
<>
|
|
|
|
<DraftMenu
|
|
|
|
{...{
|
|
|
|
design,
|
|
|
|
pattern,
|
|
|
|
patternConfig,
|
|
|
|
settings,
|
|
|
|
setSettings,
|
|
|
|
ui,
|
|
|
|
update,
|
|
|
|
language,
|
|
|
|
account,
|
|
|
|
inspector,
|
|
|
|
renderProps,
|
|
|
|
view,
|
|
|
|
setView,
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
</>
|
2023-06-23 17:45:50 -05:00
|
|
|
),
|
|
|
|
}}
|
|
|
|
/>
|
2023-06-15 09:23:49 +02:00
|
|
|
)
|
|
|
|
}
|