This commit is contained in:
Mayel de Borniol 2024-04-01 16:28:15 +01:00
parent 5a6a6b7fa6
commit 6617e15fae
7 changed files with 299 additions and 95 deletions

View file

@ -4,7 +4,7 @@ This file was generated by the Surface compiler.
import { defaultValueCtx, editorViewOptionsCtx, Editor, editorViewCtx, commandsCtx, rootCtx } from '@milkdown/core';
import { $prose, replaceAll, insert} from '@milkdown/utils';
import { commonmark, wrapInHeadingCommand, toggleStrongCommand, toggleEmphasisCommand} from '@milkdown/preset-commonmark';
import { commonmark, wrapInHeadingCommand, toggleStrongCommand, toggleEmphasisCommand, remarkInlineLinkPlugin } from '@milkdown/preset-commonmark';
import {gfm} from "@milkdown/preset-gfm";
import { emoji } from '@milkdown/plugin-emoji';
import { listener, listenerCtx } from '@milkdown/plugin-listener';
@ -330,8 +330,7 @@ const createEditor = async (_this, hidden_input, composer$) => {
ctx.get(listenerCtx)
.markdownUpdated((ctx, markdown, prevMarkdown) => {
const transformedMarkdown = markdown
.replace(/!\[(.*?)\]\(.*?\)/g, '$1')
.replace(/\[(.*?)\]\(.*?\)/g, '$1');
.replace(/!\[(.*?)\]\(.*?\)/g, '$1');
hidden_input.value = transformedMarkdown;
console.log(hidden_input.value);
const inputEvent = new Event('input', {
@ -349,6 +348,7 @@ const createEditor = async (_this, hidden_input, composer$) => {
})
// .config(nord)
.use(commonmark)
.use(remarkInlineLinkPlugin)
.use(gfm)
.use(emoji)
.use(listener)
@ -370,7 +370,7 @@ const createEditor = async (_this, hidden_input, composer$) => {
referenceElement: trigger,
triggerElement: trigger,
emojiSize: '1.75rem',
className: 'z-[9999]',
className: 'z-[99999999999999999999]',
});

View file

@ -0,0 +1,32 @@
/*
This file was generated by the Surface compiler.
*/
import { decodeBlurHash } from 'fast-blurhash';
export default {
mounted() {
// const canvas = document.createElement('canvas');
const canvas = this.el.getElementsByTagName('canvas')[0];
// console.log(canvas)
const w = canvas.width || 40
const h = canvas.height || 40
const default_hash = 'LEHV6nWB2yk8pyo0adR*.7kCMdnj'
const hash = this.el.dataset.hash
// console.log(hash)
// decode blurHash image
const pixels = decodeBlurHash(hash || default_hash, w, h);
// console.log(pixels)
// draw it on canvas
const ctx = canvas.getContext('2d');
const imageData = ctx.createImageData(w, h);
imageData.data.set(pixels);
// console.log(imageData)
ctx.putImageData(imageData, 0, 0);
// document.body.append(canvas);
}
}

View file

@ -2,6 +2,10 @@
This file was generated by the Surface compiler.
*/
/*
This file was generated by the Surface compiler.
*/
let PreviewActivity = {
isTruncated(element) {
@ -17,53 +21,76 @@ let PreviewActivity = {
mounted() {
this.el.addEventListener("click", e => {
console.log("PreviewActivity clicked")
console.log("where clicked")
let trigger = this.el.querySelector('.open_preview_link')
let anchor = e.target.closest('a')
console.log(e.target)
// this was used to expand long posts by clicking on them, now replaced with a 'Read more' button
// let previewable_activity = e.target.closest('.previewable_activity')
// anchor == trigger || (!anchor && previewable_activity && ( previewable_activity.classList.contains('previewable_expanded') || this.isTruncated(previewable_activity.querySelector('.previewable_truncate')) == false)
if (trigger && ((!anchor || anchor.classList.contains('preview_activity_link')) && !e.ctrlKey && !e.metaKey && !window.getSelection().toString() && !e.target.closest('button') && !e.target.closest('figure') && !e.target.closest('.dropdown') && !e.target.closest('[data-id=activity_actions]')
if ((trigger || !window.liveSocket) && ((!anchor || anchor.classList.contains('preview_activity_link')) && !e.ctrlKey && !e.metaKey && (!window.getSelection().toString() || window.getSelection().toString() == "") && !e.target.closest('button') && !e.target.closest('figure') && !e.target.closest('.dropdown') && !e.target.closest('[data-id=activity_actions]')
)) {
let uri = this.el.dataset.href || (trigger !== undefined && trigger.getAttribute('href')) //this.el.dataset.permalink
let uri = this.el.dataset.href || (trigger !== undefined && trigger.getAttribute('href'))
if (window.liveSocket) {
// const feed = document.querySelector(".feed")
const main = document.getElementById("inner")
const layout = document.getElementById("root")
const preview_content = document.getElementById("preview_content")
let previous_scroll = null
console.log("push event to load up the PreviewContent")
this.pushEventTo(trigger, "open", {})
if (!e.target.closest('#preview_content')) {
// if we're not already in preview_content (i.e. for feed in extra_contents, because it's in a different LV), don't use this and just redirect
console.log("fallback to navigate")
let uri = this.el.dataset.href || (trigger !== undefined && trigger.getAttribute('href'))
if (uri) {
this.pushEvent(
"navigate",
{ to: uri }
)
}
// this.pushEvent("Bonfire.Social.Feeds:open_activity", { id: this.el.dataset.id, permalink: uri })
} else {
console.log("push event to load up the PreviewContent")
if (layout) {
previous_scroll = layout.scrollTop
// const feed = document.querySelector(".feed")
const layout = document.getElementById("root")
const main = document.getElementById("inner")
const preview_content = document.getElementById("preview_content")
const extra_contents = document.getElementById("the_extra_contents")
let previous_scroll = null
this.pushEventTo(trigger, "open", {})
// this.pushEvent("Bonfire.Social.Feeds:open_activity", { id: this.el.dataset.id, permalink: uri })
if (layout) {
previous_scroll = layout.scrollTop
}
if (main) {
main.classList.add("hidden")
}
if (extra_contents) {
extra_contents.classList.add("hidden")
}
if (preview_content) {
preview_content.classList.remove("hidden")
}
if (uri) {
// console.log(uri)
history.pushState(
{
'previous_url': document.location.href,
'previous_scroll': previous_scroll
},
'',
uri)
}
e.preventDefault();
}
if (preview_content) {
preview_content.classList.remove("hidden")
}
if (main) {
main.classList.add("hidden")
}
if (uri) {
// console.log(uri)
history.pushState(
{
'previous_url': document.location.href,
'previous_scroll': previous_scroll
},
'',
uri)
}
e.preventDefault();
} else {
// fallback if not connected with live socket
@ -77,18 +104,34 @@ let PreviewActivity = {
}
}
} else {
// e.preventDefault();
console.log("PreviewActivity: do not trigger preview in favour of another link or button's action (or opening in new tab)")
// if (previewable_activity) { previewable_activity.classList.add("previewable_expanded") }
console.log(trigger)
console.log(window.liveSocket)
console.log(anchor)
// console.log(anchor.classList)
console.log(e.ctrlKey)
console.log(e.metaKey)
console.log(window.getSelection().toString())
console.log(e.target.closest('button'))
console.log(e.target.closest('figure'))
console.log(e.target.closest('.dropdown'))
console.log(e.target.closest('[data-id=activity_actions]'))
// if (previewable_activity) { previewable_activity.classList.add("previewable_expanded") }
return;
}
})
}
}
@ -114,21 +157,44 @@ let PreviewActivity = {
// }
// }
let PreviewExtra = {
mounted() {
this.el.addEventListener("click", e => {
console.log("click - attempt showing extra preview")
e.preventDefault();
let ClosePreview = {
const preview_content = document.getElementById("preview_content")
const main = document.getElementById("inner")
if (main && preview_content) {
main.classList.add("hidden")
const the_preview_contents = document.getElementById("the_preview_contents")
if (the_preview_contents) { the_preview_contents.classList.add("hidden") }
const extra_contents = document.getElementById("extra_contents")
if (extra_contents) { extra_contents.classList.remove("hidden") }
preview_content.classList.add("!visible")
preview_content.classList.add("!h-auto")
preview_content.classList.remove("hidden")
} else {
console.log("fallback to navigate")
this.pushEvent(
"navigate",
{ to: this.el.dataset.to || "#unknown_to" }
)
}
})
}
}
let ClosePreview = {
mounted() {
const back = function () {
const layout = document.getElementById("root")
const main = document.getElementById("inner")
const preview_content = document.getElementById("preview_content")
if (preview_content) {
preview_content.classList.add("hidden")
}
const maybe_browser_back = function () {
if (history.state) {
location_before_preview = history.state["previous_url"]
previous_scroll = history.state["previous_scroll"]
main.classList.remove("hidden")
if (location_before_preview) {
history.pushState({}, '', location_before_preview)
}
@ -139,10 +205,38 @@ let ClosePreview = {
}
}
const close_or_back = function () {
const the_preview_contents = document.getElementById("the_preview_contents")
const the_extra_contents = document.getElementById("the_extra_contents")
if (the_preview_contents && the_extra_contents) {
console.log("click - attempt going back to extra content")
const extra_contents = document.getElementById("extra_contents")
the_preview_contents.classList.add("hidden")
extra_contents.classList.remove("hidden")
the_extra_contents.classList.remove("hidden")
} else {
if (the_extra_contents) {
console.log("click - attempt going back to main view")
const preview_content = document.getElementById("preview_content")
const main = document.getElementById("inner_inner") || document.getElementById("inner")
preview_content.classList.add("hidden")
main.classList.remove("hidden")
} else {
console.log("click - attempt browser back")
maybe_browser_back()
}
}
}
// close button
this.el.addEventListener("click", e => {
console.log("click - attempt going back")
back()
close_or_back()
})
// intercept browser "back" action
@ -154,10 +248,34 @@ let ClosePreview = {
console.log("qui")
// this.pushEvent("Bonfire.UI.Common.OpenPreviewLive:close", {})
back();
close_or_back();
})
}
}
export { PreviewActivity, ClosePreview }
let CloseAll = {
mounted() {
// close button
this.el.addEventListener("click", e => {
const the_preview_contents = document.getElementById("the_preview_contents")
const the_extra_contents = document.getElementById("the_extra_contents")
if (the_extra_contents || the_preview_contents) {
console.log("click - attempt going back to main view")
const main = document.getElementById("inner")
main.innerHTML = ""; // empty previous contents - TODO: show loading placeholder/animation? and skip if destination is existing view
const preview_content = document.getElementById("preview_content")
preview_content.classList.add("hidden")
main.classList.remove("hidden")
} else {
console.log("click - no preview open, stick to default action")
}
})
}
}
export { PreviewActivity, PreviewExtra, ClosePreview, CloseAll }

View file

@ -0,0 +1,49 @@
/*
This file was generated by the Surface compiler.
*/
export default {
timeAgo(input) {
const locale = (navigator.languages && navigator.languages.length) ? navigator.languages[0] : navigator.language; // TODO: use app local instead of browser locale
const date = (input instanceof Date) ? input : new Date(input);
const formatter = new Intl.RelativeTimeFormat(locale);
const ranges = {
years: 3600 * 24 * 365,
months: 3600 * 24 * 30,
weeks: 3600 * 24 * 7,
days: 3600 * 24,
hours: 3600,
minutes: 60,
seconds: 1
};
const secondsElapsed = (date.getTime() - Date.now()) / 1000;
for (let key in ranges) {
if (ranges[key] < Math.abs(secondsElapsed)) {
const delta = secondsElapsed / ranges[key];
return formatter.format(Math.round(delta), key);
}
}
},
setTimeAgo(el, the_date) {
var date_ago = this.timeAgo(the_date)
// console.log(date_ago)
if (date_ago) {
this.el.innerHTML = date_ago
setTimeout(() => {
this.setTimeAgo(el, the_date)
}, 60_000);
}
},
mounted() {
var the_date = this.el.getAttribute("data-date")
// console.log(the_date)
if (the_date) {
setTimeout(() => {
this.setTimeAgo(this.el, the_date)
}, 60_000);
}
}
}

View file

@ -12,22 +12,26 @@ function ns(hooks, nameSpace) {
import * as c1 from "./Bonfire.Editor.Milkdown.hooks"
import * as c2 from "./Bonfire.UI.Common.ViewCodeLive.hooks"
import * as c3 from "./Bonfire.UI.Common.PreviewContentLive.hooks"
import * as c4 from "./Bonfire.UI.Common.NotificationLive.hooks"
import * as c5 from "./Bonfire.UI.Common.LoadMoreLive.hooks"
import * as c6 from "./Bonfire.UI.Common.ChangeLocaleLive.hooks"
import * as c7 from "./Bonfire.UI.Common.ChangeThemesLive.hooks"
import * as c8 from "./Bonfire.UI.Common.ComposerLive.hooks"
import * as c3 from "./Bonfire.UI.Common.LazyImage.hooks"
import * as c4 from "./Bonfire.UI.Common.PreviewContentLive.hooks"
import * as c5 from "./Bonfire.UI.Common.NotificationLive.hooks"
import * as c6 from "./Bonfire.UI.Common.LoadMoreLive.hooks"
import * as c7 from "./Bonfire.UI.Common.ChangeLocaleLive.hooks"
import * as c8 from "./Bonfire.UI.Common.ChangeThemesLive.hooks"
import * as c9 from "./Bonfire.UI.Common.ComposerLive.hooks"
import * as c10 from "./Bonfire.UI.Social.Activity.DateAgoLive.hooks"
let hooks = Object.assign(
ns(c1, "Bonfire.Editor.Milkdown"),
ns(c2, "Bonfire.UI.Common.ViewCodeLive"),
ns(c3, "Bonfire.UI.Common.PreviewContentLive"),
ns(c4, "Bonfire.UI.Common.NotificationLive"),
ns(c5, "Bonfire.UI.Common.LoadMoreLive"),
ns(c6, "Bonfire.UI.Common.ChangeLocaleLive"),
ns(c7, "Bonfire.UI.Common.ChangeThemesLive"),
ns(c8, "Bonfire.UI.Common.ComposerLive")
ns(c3, "Bonfire.UI.Common.LazyImage"),
ns(c4, "Bonfire.UI.Common.PreviewContentLive"),
ns(c5, "Bonfire.UI.Common.NotificationLive"),
ns(c6, "Bonfire.UI.Common.LoadMoreLive"),
ns(c7, "Bonfire.UI.Common.ChangeLocaleLive"),
ns(c8, "Bonfire.UI.Common.ChangeThemesLive"),
ns(c9, "Bonfire.UI.Common.ComposerLive"),
ns(c10, "Bonfire.UI.Social.Activity.DateAgoLive")
)
export default hooks

View file

@ -119,7 +119,8 @@ defmodule Bonfire.Umbrella.MixProject do
{:sobelow, "~> 0.12.1", only: :dev}
]
@deps Mess.deps(Mixer.mess_sources(@flavour), @extra_deps,
@deps Mixer.mess_sources(@flavour)
|> Mess.deps(@extra_deps,
use_local_forks?: @use_local_forks,
use_umbrella?: @use_umbrella?,
umbrella_root?: @use_local_forks,

View file

@ -19,19 +19,19 @@
"bamboo_ses": {:hex, :bamboo_ses, "0.4.2", "e148a0ae17f8223b830029c2e81b2ba18220aa7378531ef1f50c4212fbd9ddb1", [:mix], [{:bamboo, "~> 2.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:ex_aws, "~> 2.4.1", [hex: :ex_aws, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.2.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "feb609b57316d335b217937f66cfc7c1ebe37ec481bebe97fcd5da5f31171808"},
"bamboo_smtp": {:hex, :bamboo_smtp, "4.2.2", "e9f57a2300df9cb496c48751bd7668a86a2b89aa2e79ccaa34e0c46a5f64c3ae", [:mix], [{:bamboo, "~> 2.2.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.2.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "28cac2ec8adaae02aed663bf68163992891a3b44cfd7ada0bebe3e09bed7207f"},
"bamboo_sparkpost": {:hex, :bamboo_sparkpost, "2.0.0", "8617642e438340186da422b7f1ec25663d1c8fa869ecaf3e5ba2524131a1b5f0", [:mix], [{:bamboo, "~> 2.0", [hex: :bamboo, repo: "hexpm", optional: false]}], "hexpm", "a89a1c29e122270e50c53c77e091d885c40bebb689f8904572c38b299649bebf"},
"bandit": {:hex, :bandit, "1.3.0", "6a4e8d7c9ea721edd02c389e2cc867890cd96f83116e71ddf1ccbdd80661550c", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "bda37d6c614d74778a5dc43b8bcdc3245cd30619eab0342f58042f968f2165da"},
"bandit": {:hex, :bandit, "1.4.1", "6ff703b33a967bc20b41ed3840a4c58e62abe62b4cc598cff7429af78e174990", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "5bbc0a4c185358b7d566a3b7b32806723ae139a8704cdc841ad787b677adcb9a"},
"beam_file": {:hex, :beam_file, "0.6.0", "7ffce10001078e62428d6bfdfe3d563c7a1be2993ec20ce864cce41f9a0a6e5d", [:mix], [], "hexpm", "4b8645cdfc3153c7a61521a7a0665139ba53893d26c7d0379257e21e462221cd"},
"benchee": {:hex, :benchee, "1.3.0", "f64e3b64ad3563fa9838146ddefb2d2f94cf5b473bdfd63f5ca4d0657bf96694", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "34f4294068c11b2bd2ebf2c59aac9c7da26ffa0068afdf3419f1b176e16c5f81"},
"benchee_html": {:hex, :benchee_html, "1.0.1", "1e247c0886c3fdb0d3f4b184b653a8d6fb96e4ad0d0389267fe4f36968772e24", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:benchee_json, "~> 1.0", [hex: :benchee_json, repo: "hexpm", optional: false]}], "hexpm", "b00a181af7152431901e08f3fc9f7197ed43ff50421a8347b0c80bf45d5b3fef"},
"benchee_json": {:hex, :benchee_json, "1.0.0", "cc661f4454d5995c08fe10dd1f2f72f229c8f0fb1c96f6b327a8c8fc96a91fe5", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "da05d813f9123505f870344d68fb7c86a4f0f9074df7d7b7e2bb011a63ec231c"},
"blurhash": {:hex, :rinpatch_blurhash, "0.1.0", "01a888b0f5f1f382ab52e4396f01831cbe8486ea5828604c90f4dac533d39a4b", [:mix], [{:mogrify, "~> 0.8.0", [hex: :mogrify, repo: "hexpm", optional: true]}], "hexpm", "19911a5dcbb0acb9710169a72f702bce6cb048822b12de566ccd82b2cc42b907"},
"bolt_sips": {:hex, :bolt_sips, "2.0.11", "a1cb78d8db4aba750f6771a9fd4a10b3300618b7b0433b12105c64d21d27b4ba", [:mix], [{:calendar, "~> 0.17.2", [hex: :calendar, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.4", [hex: :db_connection, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "227a6669e14fa6d331738857b32b5cd022b4c13808e947ccfec8eccb8fedb0e5"},
"bonfire": {:git, "https://github.com/bonfire-networks/bonfire_spark", "8e8e7c37025ba66dd5f0bfc36ddf626c4a512441", [branch: "main"]},
"bonfire_api_graphql": {:git, "https://github.com/bonfire-networks/bonfire_api_graphql", "ca1c700e639dbb656af72e6e8c5176175b85e93c", [branch: "main"]},
"bonfire": {:git, "https://github.com/bonfire-networks/bonfire_spark", "e096a2ea638ddb443484d521c8d952489b7e282e", [branch: "main"]},
"bonfire_api_graphql": {:git, "https://github.com/bonfire-networks/bonfire_api_graphql", "aaaeff898be53e2ac600d8e972a0f49631fd38d3", [branch: "main"]},
"bonfire_boundaries": {:git, "https://github.com/bonfire-networks/bonfire_boundaries", "bb8e2e5b089f43084c2e5ae5c08f4219ed9f0c70", [branch: "main"]},
"bonfire_breadpub": {:git, "https://github.com/bonfire-networks/bonfire_breadpub", "61ee823f38932796c4cba2ab7e1349582371c906", [branch: "main"]},
"bonfire_classify": {:git, "https://github.com/bonfire-networks/bonfire_classify", "9250f664b0b4ea08d584eb94508c79e53667656e", [branch: "main"]},
"bonfire_common": {:git, "https://github.com/bonfire-networks/bonfire_common", "2157a17c91403b2d615314045d941717714e5c10", [branch: "main"]},
"bonfire_breadpub": {:git, "https://github.com/bonfire-networks/bonfire_breadpub", "cd8c480147eb34ca60d2531849cf63924b5dbf9a", [branch: "main"]},
"bonfire_classify": {:git, "https://github.com/bonfire-networks/bonfire_classify", "bf49c3ecf5b8e41a0fb5f9fd483a2a778ca0a7f5", [branch: "main"]},
"bonfire_common": {:git, "https://github.com/bonfire-networks/bonfire_common", "1c50ebd154b4f0d1585c10c8f7ced23134866d48", [branch: "main"]},
"bonfire_data_access_control": {:git, "https://github.com/bonfire-networks/bonfire_data_access_control", "b7c3cd9886a22e0b3652baa7edd079fac29bdea3", [branch: "main"]},
"bonfire_data_activity_pub": {:git, "https://github.com/bonfire-networks/bonfire_data_activity_pub", "00712af676e70f0f126861446bf873054f6e26c3", [branch: "main"]},
"bonfire_data_assort": {:git, "https://github.com/bonfire-networks/bonfire_data_assort", "af26dd234af89e540ccdbb144fcb240e80a81563", []},
@ -44,40 +44,40 @@
"bonfire_epics": {:git, "https://github.com/bonfire-networks/bonfire_epics", "2f9d527f912681699d6e90fe8089e58588a2de9f", [branch: "main"]},
"bonfire_fail": {:git, "https://github.com/bonfire-networks/bonfire_fail", "9be26fa86a14f80d45367c7b53527b02126a615f", [branch: "main"]},
"bonfire_federate_activitypub": {:git, "https://github.com/bonfire-networks/bonfire_federate_activitypub", "3f193f6faad9c113ce3d8274dfadefc8ddbd2209", [branch: "main"]},
"bonfire_files": {:git, "https://github.com/bonfire-networks/bonfire_files", "b74bf1d4347befeccf054dfe8ef1e27482c09599", [branch: "main"]},
"bonfire_geolocate": {:git, "https://github.com/bonfire-networks/bonfire_geolocate", "9cbb3e2540a83bba0741472d3155a64ade07891a", [branch: "main"]},
"bonfire_files": {:git, "https://github.com/bonfire-networks/bonfire_files", "1778e8a5305bb77d3d5bc1d7053098dd4748e191", [branch: "main"]},
"bonfire_geolocate": {:git, "https://github.com/bonfire-networks/bonfire_geolocate", "1e3ba2a2d1112b99bbd63ecb5f62d4ac7e710535", [branch: "main"]},
"bonfire_invite_links": {:git, "https://github.com/bonfire-networks/bonfire_invite_links", "1a1803a13d5487e6e10c3cd03df523a10af48d79", [branch: "main"]},
"bonfire_label": {:git, "https://github.com/bonfire-networks/bonfire_label", "cdbc0c0eda41ae14e32937e25669dc54991cf7eb", [branch: "main"]},
"bonfire_mailer": {:git, "https://github.com/bonfire-networks/bonfire_mailer", "001ca742f2bcc234c2d84500d0de3d70a9ad44e8", [branch: "main"]},
"bonfire_me": {:git, "https://github.com/bonfire-networks/bonfire_me", "8b9568fbe3ba11215265fbf1e9e93c4ec13c598a", [branch: "main"]},
"bonfire_messages": {:git, "https://github.com/bonfire-networks/bonfire_messages", "a2fdbfc892853ed77064bc3cb5bbef4fabfab062", []},
"bonfire_me": {:git, "https://github.com/bonfire-networks/bonfire_me", "07740dbb59b2085f17a978372cacb23f4a9d45bf", [branch: "main"]},
"bonfire_messages": {:git, "https://github.com/bonfire-networks/bonfire_messages", "4d598e19def094a4e768317b77e5667b5f36dc64", []},
"bonfire_open_id": {:git, "https://github.com/bonfire-networks/bonfire_open_id", "2ef65bca905dba0b4acedd70b176bc1e16c0bd2f", [branch: "main"]},
"bonfire_open_science": {:git, "https://github.com/bonfire-networks/bonfire_open_science", "eebb4ca678198cacaa7c254870199e746b009764", [branch: "main"]},
"bonfire_pages": {:git, "https://github.com/bonfire-networks/bonfire_pages", "8f2efad3263f41a4f20d07c589495922ea4e3ed8", [branch: "main"]},
"bonfire_posts": {:git, "https://github.com/bonfire-networks/bonfire_posts", "bc1d66bd07d401c235c6ca886359d826e746283c", []},
"bonfire_quantify": {:git, "https://github.com/bonfire-networks/bonfire_quantify", "4f73890d73c821ebdeda687f8b52bba127831d39", [branch: "main"]},
"bonfire_search": {:git, "https://github.com/bonfire-networks/bonfire_search", "b820bd081ff470e09122cf0946f8e066833652ba", [branch: "main"]},
"bonfire_social": {:git, "https://github.com/bonfire-networks/bonfire_social", "274c8fe702c18cf22f20af0f0291d83c601cb510", [branch: "main"]},
"bonfire_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_social_graph", "4abf848ee5bdd81064ad0b2f53ccd764e68c101e", []},
"bonfire_tag": {:git, "https://github.com/bonfire-networks/bonfire_tag", "273339cb177707c90d7af6040f61b20611532b5b", [branch: "main"]},
"bonfire_ui_common": {:git, "https://github.com/bonfire-networks/bonfire_ui_common", "525073728597d60503144108a22f69227eaa932a", [branch: "main"]},
"bonfire_posts": {:git, "https://github.com/bonfire-networks/bonfire_posts", "ef030475dad69747632d1c8a76e88638c9e0e38d", []},
"bonfire_quantify": {:git, "https://github.com/bonfire-networks/bonfire_quantify", "b62ea5f373f3bfdbc5114fe53c5ebeb4b272f7f8", [branch: "main"]},
"bonfire_search": {:git, "https://github.com/bonfire-networks/bonfire_search", "e136a248a8552a760ea9fd80b43cdbe31f044ab8", [branch: "main"]},
"bonfire_social": {:git, "https://github.com/bonfire-networks/bonfire_social", "89840f4f78e306fe6fcf155f1029f4f5d5c9f360", [branch: "main"]},
"bonfire_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_social_graph", "2dd906bdb26ad9383fe6fcd8dc99e0e7d112f888", []},
"bonfire_tag": {:git, "https://github.com/bonfire-networks/bonfire_tag", "6efbed3d1345fe2ba478f1df93998e1732ab0376", [branch: "main"]},
"bonfire_ui_common": {:git, "https://github.com/bonfire-networks/bonfire_ui_common", "cef3fa6aed035350d681dec05d3fdb3bf2f18b24", [branch: "main"]},
"bonfire_ui_coordination": {:git, "https://github.com/bonfire-networks/bonfire_ui_coordination", "937ebaa352b9a922adf84c786856d68262693191", [branch: "main"]},
"bonfire_ui_groups": {:git, "https://github.com/bonfire-networks/bonfire_ui_groups", "28530bac502c27a6189624a8d812f797f23d3e41", [branch: "main"]},
"bonfire_ui_kanban": {:git, "https://github.com/bonfire-networks/bonfire_ui_kanban", "0f0092e8c2c336d6ac41951adff97cbfc7c80713", [branch: "main"]},
"bonfire_ui_me": {:git, "https://github.com/bonfire-networks/bonfire_ui_me", "f78c3806e98f01bebebce75a3e7598910601e52d", [branch: "main"]},
"bonfire_ui_messages": {:git, "https://github.com/bonfire-networks/bonfire_ui_messages", "7a09c4f755172207ad8e68c36cf3c63a55a9bde2", []},
"bonfire_ui_moderation": {:git, "https://github.com/bonfire-networks/bonfire_ui_moderation", "f945aa4a281013c7454155b6d7ab942b7a68da0f", []},
"bonfire_ui_posts": {:git, "https://github.com/bonfire-networks/bonfire_ui_posts", "f996d6e605dd55e1405f9f604975f7c67c097ad0", []},
"bonfire_ui_reactions": {:git, "https://github.com/bonfire-networks/bonfire_ui_reactions", "35f9822c07e2a2d25f3d866391fa95cc218e15b7", []},
"bonfire_ui_me": {:git, "https://github.com/bonfire-networks/bonfire_ui_me", "1fabdbea9733bd0a19354412d21676a868123213", [branch: "main"]},
"bonfire_ui_messages": {:git, "https://github.com/bonfire-networks/bonfire_ui_messages", "d053d15fa9f5fbc7ba2ffde9e83bf3f475cb7002", []},
"bonfire_ui_moderation": {:git, "https://github.com/bonfire-networks/bonfire_ui_moderation", "d94191f5620d1852bc4626e3a0fffb9ac0bdbedf", []},
"bonfire_ui_posts": {:git, "https://github.com/bonfire-networks/bonfire_ui_posts", "b321e5ad6af5a09abea90345e36b9413f9066314", []},
"bonfire_ui_reactions": {:git, "https://github.com/bonfire-networks/bonfire_ui_reactions", "0b0e2f5a3eda68509418b0dc809a188dc1b69432", []},
"bonfire_ui_reflow": {:git, "https://github.com/bonfire-networks/bonfire_ui_reflow", "e4f956dc88bd138b5574c7fc4b13997adea7f730", [branch: "main"]},
"bonfire_ui_social": {:git, "https://github.com/bonfire-networks/bonfire_ui_social", "2183cb032175fe2bbcf47aa99e89ff9d95b8287e", [branch: "main"]},
"bonfire_ui_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_ui_social_graph", "7a0d51d46a044d266f36a82d6ee2ae432cddeac6", []},
"bonfire_ui_topics": {:git, "https://github.com/bonfire-networks/bonfire_ui_topics", "319d5e6c2cc4eb7b03258b869bb748667cf861e4", [branch: "main"]},
"bonfire_ui_social": {:git, "https://github.com/bonfire-networks/bonfire_ui_social", "e3227464b53d0a484ab8213dba56618e4c3b4d68", [branch: "main"]},
"bonfire_ui_social_graph": {:git, "https://github.com/bonfire-networks/bonfire_ui_social_graph", "59094e83150ccf64c15e09c4950ad7ae5b4aea43", []},
"bonfire_ui_topics": {:git, "https://github.com/bonfire-networks/bonfire_ui_topics", "17ca4f169e6891d274ef757b6fc47e160be34464", [branch: "main"]},
"bonfire_ui_valueflows": {:git, "https://github.com/bonfire-networks/bonfire_ui_valueflows", "8452eee928f9d8050d3d6503a6e3ffc0b440d580", [branch: "main"]},
"bonfire_upcycle": {:git, "https://gitlab.com/bonfire-networks/bonfire_upcycle", "31d195cb863bfd289f4f48575b975b470b01c429", [branch: "main"]},
"bonfire_valueflows": {:git, "https://github.com/bonfire-networks/bonfire_valueflows", "a2eebcfbd927d39208b0ce5a0d8015e679823840", [branch: "main"]},
"bonfire_valueflows": {:git, "https://github.com/bonfire-networks/bonfire_valueflows", "8c95472fd9748b504f7f589ee169b7e8ec748318", [branch: "main"]},
"bonfire_valueflows_api_schema": {:git, "https://github.com/bonfire-networks/bonfire_valueflows_api_schema", "80602121d19691b2d16981afa45c0a01dbc259a3", [branch: "main"]},
"bonfire_valueflows_observe": {:git, "https://github.com/bonfire-networks/bonfire_valueflows_observe", "8216f617eecae08eb57f8cd587d1f0f38b97d0f7", [branch: "main"]},
"bonfire_valueflows_observe": {:git, "https://github.com/bonfire-networks/bonfire_valueflows_observe", "f1dd6ba26387cf7fba21c9c2679f07b4fcb3e4ee", [branch: "main"]},
"boruta": {:hex, :boruta, "2.3.3", "95e0144e6d3703887cb88d21131630e0c903bf7e852b037e9c30b13f8bab7e0d", [:mix], [{:ecto_sql, ">= 3.5.2", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ex_json_schema, "~> 0.6", [hex: :ex_json_schema, repo: "hexpm", optional: false]}, {:finch, "~> 0.16", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:joken, "~> 2.0", [hex: :joken, repo: "hexpm", optional: false]}, {:jose, "~> 1.11", [hex: :jose, repo: "hexpm", optional: false]}, {:nebulex, "~> 2.0", [hex: :nebulex, repo: "hexpm", optional: false]}, {:owl, "~> 0.8.0", [hex: :owl, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:puid, "~> 1.0", [hex: :puid, repo: "hexpm", optional: false]}, {:secure_random, "~> 0.5", [hex: :secure_random, repo: "hexpm", optional: false]}, {:shards, "~> 1.0", [hex: :shards, repo: "hexpm", optional: false]}], "hexpm", "e08b25f3accccc0149c7bfc8949b4e0f0b219b72bf1c9f8e2e8ae5b7a2fba363"},
"brex_result": {:hex, :brex_result, "0.4.0", "c4f2a4a5b487c3d4cd0c94cef5df596eeae986c1dc7cfe08755efc7e766610eb", [:mix], [], "hexpm", "c221aac71c48727ef55dc56cf845772a54e1db538564280c868eb0595e1e44f8"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
@ -272,7 +272,7 @@
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_seo": {:hex, :phoenix_seo, "0.1.9", "afdfc02e891e9e3ff731f0f65e1b2ded197a7fb053ca0de3e5e38e6792323616", [:mix], [{:phoenix_live_view, "~> 0.18", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "597189734301fabb06784fcb8d4f96f5e454bd2b48015f4aafd095d4f953a90f"},
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
"phoenix_test": {:git, "https://github.com/germsvel/phoenix_test", "bb5803b0c41d049126745525a1c96e7540578e15", []},
"phoenix_test": {:git, "https://github.com/germsvel/phoenix_test", "d253ebac2a3731806d07ffee3b670cc432a19985", []},
"phoenix_view": {:hex, :phoenix_view, "2.0.3", "4d32c4817fce933693741deeb99ef1392619f942633dde834a5163124813aad3", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64"},
"plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"},
"plug_attack": {:hex, :plug_attack, "0.4.3", "88e6c464d68b1491aa083a0347d59d58ba71a7e591a7f8e1b675e8c7792a0ba8", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9ed6fb8a6f613a36040f2875130a21187126c5625092f24bc851f7f12a8cbdc1"},
@ -337,7 +337,7 @@
"wallaby": {:hex, :wallaby, "0.30.6", "7dc4c1213f3b52c4152581d126632bc7e06892336d3a0f582853efeeabd45a71", [:mix], [{:ecto_sql, ">= 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}, {:httpoison, "~> 0.12 or ~> 1.0 or ~> 2.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_ecto, ">= 3.0.0", [hex: :phoenix_ecto, repo: "hexpm", optional: true]}, {:web_driver_client, "~> 0.2.0", [hex: :web_driver_client, repo: "hexpm", optional: false]}], "hexpm", "50950c1d968549b54c20e16175c68c7fc0824138e2bb93feb11ef6add8eb23d4"},
"web_driver_client": {:hex, :web_driver_client, "0.2.0", "63b76cd9eb3b0716ec5467a0f8bead73d3d9612e63f7560d21357f03ad86e31a", [:mix], [{:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:tesla, "~> 1.3", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm", "83cc6092bc3e74926d1c8455f0ce927d5d1d36707b74d9a65e38c084aab0350f"},
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
"websock_adapter": {:hex, :websock_adapter, "0.5.5", "9dfeee8269b27e958a65b3e235b7e447769f66b5b5925385f5a569269164a210", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9"},
"websock_adapter": {:hex, :websock_adapter, "0.5.6", "0437fe56e093fd4ac422de33bf8fc89f7bc1416a3f2d732d8b2c8fd54792fe60", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "e04378d26b0af627817ae84c92083b7e97aca3121196679b73c73b99d0d133ea"},
"websocket_client": {:hex, :websocket_client, "1.5.0", "e825f23c51a867681a222148ed5200cc4a12e4fb5ff0b0b35963e916e2b5766b", [:rebar3], [], "hexpm", "2b9b201cc5c82b9d4e6966ad8e605832eab8f4ddb39f57ac62f34cb208b68de9"},
"wobserver_ng": {:hex, :wobserver_ng, "1.14.0", "58576ac7b225668ba2f06fe8620bbf0b8658a379cf0db2e3880c4f4368a1fdd5", [:mix], [{:cowboy, "~> 2.9.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:httpoison, "~> 0.11", [hex: :httpoison, repo: "hexpm", optional: false]}, {:plug, "~> 1.3", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6.0", [hex: :plug_cowboy, repo: "hexpm", optional: false]}, {:poison, "~> 2.0 or ~> 3.1", [hex: :poison, repo: "hexpm", optional: false]}, {:websocket_client, "~> 1.2", [hex: :websocket_client, repo: "hexpm", optional: false]}], "hexpm", "911721bf77389173bf99fb0d39aa86a3eb8f49cbdf57a3f856965a28198a0b1d"},
"yamerl": {:hex, :yamerl, "0.10.0", "4ff81fee2f1f6a46f1700c0d880b24d193ddb74bd14ef42cb0bcf46e81ef2f8e", [:rebar3], [], "hexpm", "346adb2963f1051dc837a2364e4acf6eb7d80097c0f53cbdc3046ec8ec4b4e6e"},