refactor: use document_action instead of viewlet