-
Notifications
You must be signed in to change notification settings - Fork 38
/
extension.go
102 lines (83 loc) · 2.24 KB
/
extension.go
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package plugin
import (
"errors"
"github.com/reearth/reearth/server/pkg/i18n"
"github.com/reearth/reearth/server/pkg/visualizer"
)
type ExtensionType string
var (
ErrPluginExtensionDuplicated error = errors.New("plugin extension duplicated")
ExtensionTypePrimitive ExtensionType = "primitive"
ExtensionTypeWidget ExtensionType = "widget"
ExtensionTypeBlock ExtensionType = "block"
ExtensionTypeVisualizer ExtensionType = "visualizer"
ExtensionTypeInfobox ExtensionType = "infobox"
ExtensionTypeInfoboxBlock ExtensionType = "infoboxBlock"
ExtensionTypeCluster ExtensionType = "cluster"
ExtensionTypeStory ExtensionType = "story"
ExtensionTypeStoryPage ExtensionType = "storyPage"
ExtensionTypeStoryBlock ExtensionType = "storyBlock"
)
type Extension struct {
id ExtensionID
extensionType ExtensionType
name i18n.String
description i18n.String
icon string
schema PropertySchemaID
visualizer visualizer.Visualizer
singleOnly bool
widgetLayout *WidgetLayout
}
func (w *Extension) ID() ExtensionID {
return w.id
}
func (w *Extension) Type() ExtensionType {
return w.extensionType
}
func (w *Extension) Name() i18n.String {
return w.name.Clone()
}
func (w *Extension) Description() i18n.String {
return w.description.Clone()
}
func (w *Extension) Icon() string {
return w.icon
}
func (w *Extension) Schema() PropertySchemaID {
return w.schema
}
func (w *Extension) Visualizer() visualizer.Visualizer {
return w.visualizer
}
func (w *Extension) SingleOnly() bool {
return w.singleOnly
}
func (w *Extension) WidgetLayout() *WidgetLayout {
if w == nil {
return nil
}
return w.widgetLayout
}
func (w *Extension) Rename(name i18n.String) {
w.name = name.Clone()
}
func (w *Extension) SetDescription(des i18n.String) {
w.description = des.Clone()
}
func (w *Extension) Clone() *Extension {
if w == nil {
return nil
}
return &Extension{
id: w.id,
extensionType: w.extensionType,
name: w.name.Clone(),
description: w.description.Clone(),
icon: w.icon,
schema: w.schema.Clone(),
visualizer: w.visualizer,
singleOnly: w.singleOnly,
widgetLayout: w.widgetLayout.Clone(),
}
}