Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Funcionamento do webpack / bundle.js

Estou tentando fazer uma implementação onde tenho o projeto do swagger editor (https://github.com/swagger-api/swagger-editor) e preciso colocar algumas coisas customizadas no topo da página como se fosse um banner contendo uns botões que farão um callback para outro módulo. Tentei incluir meus módulos personalizados dentro da estrutura existente porém notei que o swagger editor está usando um arquivo personalizado de bundle fazendo export de alguns módulos chumbado do projeto editor (e os meus não). Minha dúvida está em como fazer meus módulos personalizados de callback serem reconhecidos pelo bundle do editor, ou mesmo algo que não seja em alterar o bundle mas sim 'injetar' minhas coisas dentro do editor atravez de um build separado talvez.

Como seria a estrutura do editor:

index.html
<div id="custom"></div> *Novo banner com botões callback
<div id="swagger-editor"></div> *Já existente do editor

const editor = SwaggerEditorBundle({
      dom_id: '#swagger-editor',
      layout: 'StandaloneLayout',
      presets: [
        SwaggerEditorStandalonePreset
      ]
    })

    const Custom = SwaggerEditorBundle({ *Aqui já não funciona pois não exporta meus módulos
      dom_id: '#custom',
      layout: 'CustomLayout'
    })

Em CustomLayout:

import React from "react"
import PropTypes from "prop-types"

export default class CustomLayout extends React.Component {

  static propTypes = {
    specActions: PropTypes.object.isRequired,
    getComponent: PropTypes.func.isRequired,
  }

  render() {
    const Custom = getComponent("Custom", true)

    return (
      <div>
        <Custom/>
      </div>
    )
  }
}

E por final meu JSX tem apenas um html com botões.

Agradeço a ajuda

3 respostas
solução!

Oi Ricardo, tudo bem? Olha, eu não tenho muita experiência com isso, mas pra tentar te ajudar, eu pesquisei aqui na documentação do editor que você me passou e lá no repositório deles tem descrito que, pra alterar coisas no layout do editor, você cria um plugin e passa esse plugin para o Swagger-UI, que é quem controla a interface ao meu ver.

Eles até apresentam um exemplo em: https://github.com/swagger-api/swagger-ui/blob/master/docs/customization/custom-layout.md

Será que não é essa a abordagem que você deveria tomar?

Wanderson, eu consegui fazendo de outro jeito, basicamente criando um modulo separado, exportando e 'instalando' no editor. Mas de qualquer forma esse ai é uma abordagem mais elegante, vou ver o tempo que terei para implementar tudo e dependendo vou seguir essa ai, muito obrigado pela dica, não tinha achado isso na documentação :)

Boa! A documentação é sempre um ótimo recurso pra procurar soluções para problemas que nos parecem complexos, é sempre a minha primeira fonte.