node build fixed
This commit is contained in:
397
seanime-2.9.10/internal/plugin/ui/events.go
Normal file
397
seanime-2.9.10/internal/plugin/ui/events.go
Normal file
@@ -0,0 +1,397 @@
|
||||
package plugin_ui
|
||||
|
||||
import "github.com/goccy/go-json"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
// Client to server
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
type ClientEventType string
|
||||
|
||||
// ClientPluginEvent is an event received from the client
|
||||
type ClientPluginEvent struct {
|
||||
// ExtensionID is the "sent to"
|
||||
// If not set, the event is being sent to all plugins
|
||||
ExtensionID string `json:"extensionId,omitempty"`
|
||||
Type ClientEventType `json:"type"`
|
||||
Payload interface{} `json:"payload"`
|
||||
}
|
||||
|
||||
const (
|
||||
ClientRenderTrayEvent ClientEventType = "tray:render" // Client wants to render the tray
|
||||
ClientListTrayIconsEvent ClientEventType = "tray:list-icons" // Client wants to list all icons from all plugins
|
||||
ClientTrayOpenedEvent ClientEventType = "tray:opened" // When the tray is opened
|
||||
ClientTrayClosedEvent ClientEventType = "tray:closed" // When the tray is closed
|
||||
ClientTrayClickedEvent ClientEventType = "tray:clicked" // When the tray is clicked
|
||||
ClientListCommandPalettesEvent ClientEventType = "command-palette:list" // When the client wants to list all command palettes
|
||||
ClientCommandPaletteOpenedEvent ClientEventType = "command-palette:opened" // When the client opens the command palette
|
||||
ClientCommandPaletteClosedEvent ClientEventType = "command-palette:closed" // When the client closes the command palette
|
||||
ClientRenderCommandPaletteEvent ClientEventType = "command-palette:render" // When the client requests the command palette to render
|
||||
ClientCommandPaletteInputEvent ClientEventType = "command-palette:input" // The client sends the current input of the command palette
|
||||
ClientCommandPaletteItemSelectedEvent ClientEventType = "command-palette:item-selected" // When the client selects an item from the command palette
|
||||
ClientActionRenderAnimePageButtonsEvent ClientEventType = "action:anime-page-buttons:render" // When the client requests the buttons to display on the anime page
|
||||
ClientActionRenderAnimePageDropdownItemsEvent ClientEventType = "action:anime-page-dropdown-items:render" // When the client requests the dropdown items to display on the anime page
|
||||
ClientActionRenderMangaPageButtonsEvent ClientEventType = "action:manga-page-buttons:render" // When the client requests the buttons to display on the manga page
|
||||
ClientActionRenderMediaCardContextMenuItemsEvent ClientEventType = "action:media-card-context-menu-items:render" // When the client requests the context menu items to display on the media card
|
||||
ClientActionRenderAnimeLibraryDropdownItemsEvent ClientEventType = "action:anime-library-dropdown-items:render" // When the client requests the dropdown items to display on the anime library
|
||||
ClientActionRenderEpisodeCardContextMenuItemsEvent ClientEventType = "action:episode-card-context-menu-items:render" // When the client requests the context menu items to display on the episode card
|
||||
ClientActionRenderEpisodeGridItemMenuItemsEvent ClientEventType = "action:episode-grid-item-menu-items:render" // When the client requests the context menu items to display on the episode grid item
|
||||
ClientActionClickedEvent ClientEventType = "action:clicked" // When the user clicks on an action
|
||||
ClientFormSubmittedEvent ClientEventType = "form:submitted" // When the form registered by the tray is submitted
|
||||
ClientScreenChangedEvent ClientEventType = "screen:changed" // When the current screen changes
|
||||
ClientEventHandlerTriggeredEvent ClientEventType = "handler:triggered" // When a custom event registered by the plugin is triggered
|
||||
ClientFieldRefSendValueEvent ClientEventType = "field-ref:send-value" // When the client sends the value of a field that has a ref
|
||||
|
||||
ClientDOMQueryResultEvent ClientEventType = "dom:query-result" // Result of a DOM query
|
||||
ClientDOMQueryOneResultEvent ClientEventType = "dom:query-one-result" // Result of a DOM query for one element
|
||||
ClientDOMObserveResultEvent ClientEventType = "dom:observe-result" // Result of a DOM observation
|
||||
ClientDOMStopObserveEvent ClientEventType = "dom:stop-observe" // Stop observing DOM elements
|
||||
ClientDOMCreateResultEvent ClientEventType = "dom:create-result" // Result of creating a DOM element
|
||||
ClientDOMElementUpdatedEvent ClientEventType = "dom:element-updated" // When a DOM element is updated
|
||||
ClientDOMEventTriggeredEvent ClientEventType = "dom:event-triggered" // When a DOM event is triggered
|
||||
ClientDOMReadyEvent ClientEventType = "dom:ready" // When a DOM element is ready
|
||||
)
|
||||
|
||||
type ClientRenderTrayEventPayload struct{}
|
||||
type ClientListTrayIconsEventPayload struct{}
|
||||
type ClientTrayOpenedEventPayload struct{}
|
||||
type ClientTrayClosedEventPayload struct{}
|
||||
type ClientTrayClickedEventPayload struct{}
|
||||
type ClientActionRenderAnimePageButtonsEventPayload struct{}
|
||||
type ClientActionRenderAnimePageDropdownItemsEventPayload struct{}
|
||||
type ClientActionRenderMangaPageButtonsEventPayload struct{}
|
||||
type ClientActionRenderMediaCardContextMenuItemsEventPayload struct{}
|
||||
type ClientActionRenderAnimeLibraryDropdownItemsEventPayload struct{}
|
||||
type ClientActionRenderEpisodeCardContextMenuItemsEventPayload struct{}
|
||||
type ClientActionRenderEpisodeGridItemMenuItemsEventPayload struct{}
|
||||
|
||||
type ClientListCommandPalettesEventPayload struct{}
|
||||
|
||||
type ClientCommandPaletteOpenedEventPayload struct{}
|
||||
|
||||
type ClientCommandPaletteClosedEventPayload struct{}
|
||||
|
||||
type ClientActionClickedEventPayload struct {
|
||||
ActionID string `json:"actionId"`
|
||||
Event map[string]interface{} `json:"event"`
|
||||
}
|
||||
|
||||
type ClientEventHandlerTriggeredEventPayload struct {
|
||||
HandlerName string `json:"handlerName"`
|
||||
Event map[string]interface{} `json:"event"`
|
||||
}
|
||||
|
||||
type ClientFormSubmittedEventPayload struct {
|
||||
FormName string `json:"formName"`
|
||||
Data map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type ClientScreenChangedEventPayload struct {
|
||||
Pathname string `json:"pathname"`
|
||||
Query string `json:"query"`
|
||||
}
|
||||
|
||||
type ClientFieldRefSendValueEventPayload struct {
|
||||
FieldRef string `json:"fieldRef"`
|
||||
Value interface{} `json:"value"`
|
||||
}
|
||||
|
||||
type ClientRenderCommandPaletteEventPayload struct{}
|
||||
|
||||
type ClientCommandPaletteItemSelectedEventPayload struct {
|
||||
ItemID string `json:"itemId"`
|
||||
}
|
||||
|
||||
type ClientCommandPaletteInputEventPayload struct {
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
type ClientDOMEventTriggeredEventPayload struct {
|
||||
ElementId string `json:"elementId"`
|
||||
EventType string `json:"eventType"`
|
||||
Event map[string]interface{} `json:"event"`
|
||||
}
|
||||
|
||||
type ClientDOMQueryResultEventPayload struct {
|
||||
RequestID string `json:"requestId"`
|
||||
Elements []interface{} `json:"elements"`
|
||||
}
|
||||
|
||||
type ClientDOMQueryOneResultEventPayload struct {
|
||||
RequestID string `json:"requestId"`
|
||||
Element interface{} `json:"element"`
|
||||
}
|
||||
|
||||
type ClientDOMObserveResultEventPayload struct {
|
||||
ObserverId string `json:"observerId"`
|
||||
Elements []interface{} `json:"elements"`
|
||||
}
|
||||
|
||||
type ClientDOMCreateResultEventPayload struct {
|
||||
RequestID string `json:"requestId"`
|
||||
Element interface{} `json:"element"`
|
||||
}
|
||||
|
||||
type ClientDOMElementUpdatedEventPayload struct {
|
||||
ElementId string `json:"elementId"`
|
||||
Action string `json:"action"`
|
||||
Result interface{} `json:"result"`
|
||||
RequestID string `json:"requestId"`
|
||||
}
|
||||
|
||||
type ClientDOMStopObserveEventPayload struct {
|
||||
ObserverId string `json:"observerId"`
|
||||
}
|
||||
|
||||
type ClientDOMReadyEventPayload struct {
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
// Server to client
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
type ServerEventType string
|
||||
|
||||
// ServerPluginEvent is an event sent to the client
|
||||
type ServerPluginEvent struct {
|
||||
ExtensionID string `json:"extensionId"` // Extension ID must be set
|
||||
Type ServerEventType `json:"type"`
|
||||
Payload interface{} `json:"payload"`
|
||||
}
|
||||
|
||||
const (
|
||||
ServerTrayUpdatedEvent ServerEventType = "tray:updated" // When the trays are updated
|
||||
ServerTrayIconEvent ServerEventType = "tray:icon" // When the tray sends its icon to the client
|
||||
ServerTrayBadgeUpdatedEvent ServerEventType = "tray:badge-updated" // When the tray badge is updated
|
||||
ServerTrayOpenEvent ServerEventType = "tray:open" // When the tray is opened
|
||||
ServerTrayCloseEvent ServerEventType = "tray:close" // When the tray is closed
|
||||
ServerCommandPaletteInfoEvent ServerEventType = "command-palette:info" // When the command palette sends its state to the client
|
||||
ServerCommandPaletteUpdatedEvent ServerEventType = "command-palette:updated" // When the command palette is updated
|
||||
ServerCommandPaletteOpenEvent ServerEventType = "command-palette:open" // When the command palette is opened
|
||||
ServerCommandPaletteCloseEvent ServerEventType = "command-palette:close" // When the command palette is closed
|
||||
ServerCommandPaletteGetInputEvent ServerEventType = "command-palette:get-input" // When the command palette requests the input from the client
|
||||
ServerCommandPaletteSetInputEvent ServerEventType = "command-palette:set-input" // When the command palette sets the input
|
||||
ServerActionRenderAnimePageButtonsEvent ServerEventType = "action:anime-page-buttons:updated" // When the server renders the anime page buttons
|
||||
ServerActionRenderAnimePageDropdownItemsEvent ServerEventType = "action:anime-page-dropdown-items:updated" // When the server renders the anime page dropdown items
|
||||
ServerActionRenderMangaPageButtonsEvent ServerEventType = "action:manga-page-buttons:updated" // When the server renders the manga page buttons
|
||||
ServerActionRenderMediaCardContextMenuItemsEvent ServerEventType = "action:media-card-context-menu-items:updated" // When the server renders the media card context menu items
|
||||
ServerActionRenderEpisodeCardContextMenuItemsEvent ServerEventType = "action:episode-card-context-menu-items:updated" // When the server renders the episode card context menu items
|
||||
ServerActionRenderEpisodeGridItemMenuItemsEvent ServerEventType = "action:episode-grid-item-menu-items:updated" // When the server renders the episode grid item menu items
|
||||
ServerActionRenderAnimeLibraryDropdownItemsEvent ServerEventType = "action:anime-library-dropdown-items:updated" // When the server renders the anime library dropdown items
|
||||
ServerFormResetEvent ServerEventType = "form:reset"
|
||||
ServerFormSetValuesEvent ServerEventType = "form:set-values"
|
||||
ServerFieldRefSetValueEvent ServerEventType = "field-ref:set-value" // Set the value of a field (not in a form)
|
||||
ServerFatalErrorEvent ServerEventType = "fatal-error" // When the UI encounters a fatal error
|
||||
ServerScreenNavigateToEvent ServerEventType = "screen:navigate-to" // Navigate to a new screen
|
||||
ServerScreenReloadEvent ServerEventType = "screen:reload" // Reload the current screen
|
||||
ServerScreenGetCurrentEvent ServerEventType = "screen:get-current" // Get the current screen
|
||||
|
||||
ServerDOMQueryEvent ServerEventType = "dom:query" // When the server queries for DOM elements
|
||||
ServerDOMQueryOneEvent ServerEventType = "dom:query-one" // When the server queries for a single DOM element
|
||||
ServerDOMObserveEvent ServerEventType = "dom:observe" // When the server starts observing DOM elements
|
||||
ServerDOMStopObserveEvent ServerEventType = "dom:stop-observe" // When the server stops observing DOM elements
|
||||
ServerDOMCreateEvent ServerEventType = "dom:create" // When the server creates a DOM element
|
||||
ServerDOMManipulateEvent ServerEventType = "dom:manipulate" // When the server manipulates a DOM element
|
||||
ServerDOMObserveInViewEvent ServerEventType = "dom:observe-in-view"
|
||||
)
|
||||
|
||||
type ServerTrayUpdatedEventPayload struct {
|
||||
Components interface{} `json:"components"`
|
||||
}
|
||||
|
||||
type ServerCommandPaletteUpdatedEventPayload struct {
|
||||
Placeholder string `json:"placeholder"`
|
||||
Items interface{} `json:"items"`
|
||||
}
|
||||
|
||||
type ServerTrayOpenEventPayload struct {
|
||||
ExtensionID string `json:"extensionId"`
|
||||
}
|
||||
|
||||
type ServerTrayCloseEventPayload struct {
|
||||
ExtensionID string `json:"extensionId"`
|
||||
}
|
||||
|
||||
type ServerTrayIconEventPayload struct {
|
||||
ExtensionID string `json:"extensionId"`
|
||||
ExtensionName string `json:"extensionName"`
|
||||
IconURL string `json:"iconUrl"`
|
||||
WithContent bool `json:"withContent"`
|
||||
TooltipText string `json:"tooltipText"`
|
||||
BadgeNumber int `json:"badgeNumber"`
|
||||
BadgeIntent string `json:"badgeIntent"`
|
||||
Width string `json:"width,omitempty"`
|
||||
MinHeight string `json:"minHeight,omitempty"`
|
||||
}
|
||||
|
||||
type ServerTrayBadgeUpdatedEventPayload struct {
|
||||
BadgeNumber int `json:"badgeNumber"`
|
||||
BadgeIntent string `json:"badgeIntent"`
|
||||
}
|
||||
|
||||
type ServerFormResetEventPayload struct {
|
||||
FormName string `json:"formName"`
|
||||
FieldToReset string `json:"fieldToReset"` // If not set, the form will be reset
|
||||
}
|
||||
|
||||
type ServerFormSetValuesEventPayload struct {
|
||||
FormName string `json:"formName"`
|
||||
Data map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type ServerFieldRefSetValueEventPayload struct {
|
||||
FieldRef string `json:"fieldRef"`
|
||||
Value interface{} `json:"value"`
|
||||
}
|
||||
|
||||
type ServerFieldRefGetValueEventPayload struct {
|
||||
FieldRef string `json:"fieldRef"`
|
||||
}
|
||||
|
||||
type ServerFatalErrorEventPayload struct {
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
type ServerScreenNavigateToEventPayload struct {
|
||||
Path string `json:"path"`
|
||||
}
|
||||
|
||||
type ServerActionRenderAnimePageButtonsEventPayload struct {
|
||||
Buttons interface{} `json:"buttons"`
|
||||
}
|
||||
|
||||
type ServerActionRenderAnimePageDropdownItemsEventPayload struct {
|
||||
Items interface{} `json:"items"`
|
||||
}
|
||||
|
||||
type ServerActionRenderMangaPageButtonsEventPayload struct {
|
||||
Buttons interface{} `json:"buttons"`
|
||||
}
|
||||
|
||||
type ServerActionRenderMediaCardContextMenuItemsEventPayload struct {
|
||||
Items interface{} `json:"items"`
|
||||
}
|
||||
|
||||
type ServerActionRenderAnimeLibraryDropdownItemsEventPayload struct {
|
||||
Items interface{} `json:"items"`
|
||||
}
|
||||
|
||||
type ServerActionRenderEpisodeCardContextMenuItemsEventPayload struct {
|
||||
Items interface{} `json:"items"`
|
||||
}
|
||||
|
||||
type ServerActionRenderEpisodeGridItemMenuItemsEventPayload struct {
|
||||
Items interface{} `json:"items"`
|
||||
}
|
||||
|
||||
type ServerScreenReloadEventPayload struct{}
|
||||
|
||||
type ServerCommandPaletteInfoEventPayload struct {
|
||||
Placeholder string `json:"placeholder"`
|
||||
KeyboardShortcut string `json:"keyboardShortcut"`
|
||||
}
|
||||
|
||||
type ServerCommandPaletteOpenEventPayload struct{}
|
||||
|
||||
type ServerCommandPaletteCloseEventPayload struct{}
|
||||
|
||||
type ServerCommandPaletteGetInputEventPayload struct{}
|
||||
|
||||
type ServerCommandPaletteSetInputEventPayload struct {
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
type ServerScreenGetCurrentEventPayload struct{}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
func NewClientPluginEvent(data map[string]interface{}) *ClientPluginEvent {
|
||||
extensionID, ok := data["extensionId"].(string)
|
||||
if !ok {
|
||||
extensionID = ""
|
||||
}
|
||||
|
||||
eventType, ok := data["type"].(string)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
payload, ok := data["payload"]
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &ClientPluginEvent{
|
||||
ExtensionID: extensionID,
|
||||
Type: ClientEventType(eventType),
|
||||
Payload: payload,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *ClientPluginEvent) ParsePayload(ret interface{}) bool {
|
||||
data, err := json.Marshal(e.Payload)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if err := json.Unmarshal(data, &ret); err != nil {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (e *ClientPluginEvent) ParsePayloadAs(t ClientEventType, ret interface{}) bool {
|
||||
if e.Type != t {
|
||||
return false
|
||||
}
|
||||
return e.ParsePayload(ret)
|
||||
}
|
||||
|
||||
// Add DOM event payloads
|
||||
type ServerDOMQueryEventPayload struct {
|
||||
Selector string `json:"selector"`
|
||||
RequestID string `json:"requestId"`
|
||||
WithInnerHTML bool `json:"withInnerHTML"`
|
||||
WithOuterHTML bool `json:"withOuterHTML"`
|
||||
IdentifyChildren bool `json:"identifyChildren"`
|
||||
}
|
||||
|
||||
type ServerDOMQueryOneEventPayload struct {
|
||||
Selector string `json:"selector"`
|
||||
RequestID string `json:"requestId"`
|
||||
WithInnerHTML bool `json:"withInnerHTML"`
|
||||
WithOuterHTML bool `json:"withOuterHTML"`
|
||||
IdentifyChildren bool `json:"identifyChildren"`
|
||||
}
|
||||
|
||||
type ServerDOMObserveEventPayload struct {
|
||||
Selector string `json:"selector"`
|
||||
ObserverId string `json:"observerId"`
|
||||
WithInnerHTML bool `json:"withInnerHTML"`
|
||||
WithOuterHTML bool `json:"withOuterHTML"`
|
||||
IdentifyChildren bool `json:"identifyChildren"`
|
||||
}
|
||||
|
||||
type ServerDOMStopObserveEventPayload struct {
|
||||
ObserverId string `json:"observerId"`
|
||||
}
|
||||
|
||||
type ServerDOMCreateEventPayload struct {
|
||||
TagName string `json:"tagName"`
|
||||
RequestID string `json:"requestId"`
|
||||
}
|
||||
|
||||
type ServerDOMManipulateEventPayload struct {
|
||||
ElementId string `json:"elementId"`
|
||||
Action string `json:"action"`
|
||||
Params map[string]interface{} `json:"params"`
|
||||
RequestID string `json:"requestId"`
|
||||
}
|
||||
|
||||
type ServerDOMObserveInViewEventPayload struct {
|
||||
Selector string `json:"selector"`
|
||||
ObserverId string `json:"observerId"`
|
||||
WithInnerHTML bool `json:"withInnerHTML"`
|
||||
WithOuterHTML bool `json:"withOuterHTML"`
|
||||
IdentifyChildren bool `json:"identifyChildren"`
|
||||
Margin string `json:"margin"`
|
||||
}
|
||||
Reference in New Issue
Block a user