Pushpin: Trazendo ideias da fazenda

Criado em 6 nov. 2019  ·  4Comentários  ·  Fonte: automerge/pushpin

Brincando um pouco com o alfinete #310 e #316 eu reconheço que o que eu realmente gostaria de realizar é mais ou menos o que eu queria com meu experimento dat://code.gozala.io/ (que não é muito diferente de https://observablehq.com/) que é uma maneira de escrever um pouco de código que me permite pegar um pedaço de dados e criar um widget ou um reutilizável. Suponho que estou usando-o um pouco ao longo das linhas de planilhas, exceto com interface sob medida, adaptada a uma tarefa específica.

Na verdade, farm era exatamente isso, muito melhor, na verdade, pois acho que o quadro é uma superfície muito melhor para esse tipo de interação do que um bloco de notas que você precisa rolar para cima e para baixo ou planilha para esse assunto.

Então, tenho me perguntado se poderíamos ressuscitar o que torna a fazenda tão atraente. Da minha conversa com @pvh , tenho a sensação de que, embora Elm seja uma linguagem muito legal, provou ser muito limitante na prática 😢 (o que temo ecoar experiências que tive com ele em minhas tentativas de usá-lo para https:// github.com/browserhtml/browserhtml ou mesmo no mencionado https://observablehq.com/). No entanto, acho que o elemento mais atraente do farm foi a ideia de que tudo na tela era representado usando (doc, lens) onde lens era um pedaço de código também armazenado em algum documento.

Eu gostaria de trazer isso de volta, mas omitindo (pelo menos inicialmente) o compilador Elm. Também acontece que eu estava usando a biblioteca https://github.com/mozilla/reflex/ que é mais ou menos arquitetura Elm em JS, que não requer nenhuma etapa de compilação (o verificador de tipos seria bom) .

Então, juntando tudo isso, é isso que eu gostaria de tentar:

  1. Cresça #310 para se tornar um componente de "edição de lentes", que essencialmente permite escrever um pouco de JS que pode ser referenciado e carregado via URL. Infelizmente, parece que hypermerge:/ URLs não podem ser carregados apenas hyperfile:/... , mas talvez isso possa ser resolvido ou, na pior das hipóteses, o componente possa criar novos URLs hyperfile:/ após as alterações.

  2. Crie outro componente "pipeline" que incorpore o componente "criação de lentes" ou melhor, seletor para lentes existentes e um seletor de dados "doc" para projetar um com o outro. _Gostaria que o pipeline não se limitasse apenas a (dados, lente) onde a visualização do projeto de lente (HTML), mas permitisse dados para projeções de dados para que as coisas pudessem ser encadeadas em pipelines maiores, mas isso pode ser um pouco exagerado no momento) _. A lente padrão pode ser o inspetor (veja #316) para que apenas o documento renderize algo e a partir daí pode-se optar por usar outro, ou criar um.

Observe que, com algo assim, eu poderia facilmente recriar a ferramenta que uso com frequência https://hackmd.io/ onde eu poderia usar o componente "editor de código" para digitar markdown e componente "pipeline" para renderizar sua visualização lado a lado ou o que fizer sentido.

PS: Ainda estou pensando nessa ideia, mas compartilharia para feedback e na tentativa de documentá-la

Comentários muito úteis

cc @pfrazee parece semelhante ao que você está fazendo com "visualizar arquivos" no Beaker.

Todos 4 comentários

cc @pfrazee parece semelhante ao que você está fazendo com "visualizar arquivos" no Beaker.

Isso também é muito semelhante ao que a Wireline está tentando fazer, eu acho.

Outra coisa que fica girando na minha cabeça é quando eu penso em data -> view e data -> data de alguma forma é sempre o salto do primeiro para o segundo. Lembro-me que em uma das discussões em http://offlinefirst.org/camp/ havia uma ideia de anexar links aos blocos de dados (doc no contexto de pushpin) para "visualizações renderizadas" e links para "código-fonte" para renderizando essas visualizações.

E se generalizássemos data -> view para data -> data onde a saída fosse um documento html (que de fato talvez valha a pena persistir como tal documento). Dessa forma, o pushpin poderia apenas renderizar documentos que são HTML diretamente e aqueles que não são como data inspector .

A partir dos widgets existentes, eles podem ser pensados ​​como Note : data -> html , Thread: data -> html , etc ...

O principal problema com a persistência e restauração de html são os ouvintes de eventos, no entanto, esse também é o problema com o qual lidei ao tentar obter toda a lógica do aplicativo do thread principal e acho que tenho algumas idéias de como resolver isso.

Para ser específico para fazê-lo funcionar fora da solução de thread principal que eu escolhi foi usar uma biblioteca decoder.flow que é inspirada na biblioteca JSON Decoder de Elm, onde os decodificadores são combinadores de analisadores declarativos que podem ser serializados, carregados no thread principal e usados para extrair/codificar informações relevantes do evento e passá-las de volta para a thread onde o programa está sendo executado.

Neste caso de uso específico, estou pensando que codificadores compostos podem ser salvos no mesmo documento que a saída html renderizada e referenciados em hash usando seu endereço (provavelmente é hash de conteúdo).

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Gozala picture Gozala  ·  9Comentários

pvh picture pvh  ·  4Comentários

canadaduane picture canadaduane  ·  9Comentários

Gozala picture Gozala  ·  13Comentários

edrex picture edrex  ·  7Comentários