content = $content; } /** * Set selector. * * @param string $selector Selector * * @return void * * @since 1.0.0 */ public function setSelector(string $selector) : void { $this->selector = $selector; } /** * Set action. * * @param int $action action * * @return void * * @since 1.0.0 */ public function setAction(int $action) : void { $this->action = $action; } /** * Set delay. * * @param int $delay Delay in ms * * @return void * * @since 1.0.0 */ public function setDelay(int $delay) : void { $this->delay = $delay; } /** * Render message. * * @return string * * @since 1.0.0 */ public function serialize() : string { return $this->__toString(); } /** * {@inheritdoc} */ public function jsonSerialize() : mixed { return $this->toArray(); } /** * {@inheritdoc} */ public function unserialize(mixed $raw) : void { if (!\is_string($raw)) { return; } $unserialized = \json_decode($raw, true); if (!\is_array($unserialized)) { return; } $this->delay = $unserialized['time'] ?? 0; $this->selector = $unserialized['selector'] ?? ''; $this->action = $unserialized['action'] ?? ''; $this->content = $unserialized['content'] ?? DomAction::MODIFY; } /** * Stringify. * * @return string * * @since 1.0.0 */ public function __toString() { return (string) \json_encode($this->toArray()); } /** * Generate message array. * * @return array * * @since 1.0.0 */ public function toArray() : array { return [ 'type' => self::TYPE, 'time' => $this->delay, 'selector' => $this->selector, 'action' => $this->action, 'content' => $this->content, ]; } }