Giter Site home page Giter Site logo

Comments (9)

jaimemears avatar jaimemears commented on July 3, 2024

This feature is meant to refer to the way that CDJ is architected - when you create a beat it generates a unique URL so that you can share your beat with others without us needing to keep a database. We'd love for this to exist in SA so that ppl can share their annotations. Here is an example https://citizen-dj.labs.loc.gov/loc-variety-stage/remix/?i=2018620417&s=215737&d=mpc&p=90fA3

from loc-speculative-annotations.

jaimemears avatar jaimemears commented on July 3, 2024

I know Brian well and he's very generous if you have specific questions about this feature. The repo is here - https://github.com/LibraryOfCongress/citizen-dj

from loc-speculative-annotations.

jaimemears avatar jaimemears commented on July 3, 2024

My solution is a bit bespoke/convoluted since I tried to optimize the url size for my specific use-case. Generally speaking, I packed all the remix/sequencer edits into the url, shortening/removing parameters when possible, and only using valid URL characters to avoid long strings from character encoding.

In any case, the logic starts here:
https://github.com/LibraryOfCongress/citizen-dj/blob/master/js/remix.js#L146

Depending on how much (and what kind) of data you need to store in the URL might suggest another solution which I'm happy to discuss. This thread describes some useful strategies for dealing with unwieldy URLs.

Best,
Brian

from loc-speculative-annotations.

jaimemears avatar jaimemears commented on July 3, 2024

I also looked into libraries like this, but it didn't achieve the url length i needed, but might work for them:
https://github.com/masotime/json-url

from loc-speculative-annotations.

jaimemears avatar jaimemears commented on July 3, 2024

And this from Ben on Newspaper Navigator approach -
Hey Jaime! So all of the endpoints for NN are served from this flask file: https://github.com/LibraryOfCongress/newspaper-navigator/blob/master/news_navigator_app/flaskapp.py

You’ll see a bunch of functions like this one: route('/view', methods=['GET']) (edited)

The whole app is then served from the same persistent prefix, and Chris or John (LC developers) set up the code for the URL mapping using cloudfront

Does that help? Definitely happy to talk to Adam directly too!

from loc-speculative-annotations.

adamjarling avatar adamjarling commented on July 3, 2024

@jaimemears Thanks for sharing this. The easiest solution would be the first referenced above...packing the JSON data into the URL as a param, but the length and/or char encoding could be an issue. I plan on spending some time on this feature over the weekend and will have some feedback for you.

from loc-speculative-annotations.

adamjarling avatar adamjarling commented on July 3, 2024

Here's a test scenario, just clarifying what the annotation JSON data looks like that we need to pass around in order to share items via a link.

Note: this is a very simple scenario and arguably much lighter than real implementations...but just to lay it out.

image

FabricJS JSON

This is a JSON representation of the user's annotations, which we are saving to localStorage, and using to select and load all a user's saved annotations.

{"version":"4.0.0-rc.1","objects":[{"type":"path","version":"4.0.0-rc.1","originX":"left","originY":"top","left":102.11,"top":114.11,"width":176.68,"height":147.55,"fill":null,"stroke":"#e600dc","strokeWidth":20,"strokeDashArray":null,"strokeLineCap":"round","strokeDashOffset":0,"strokeLineJoin":"round","strokeMiterLimit":10,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","skewX":0,"skewY":0,"path":[["M",112.10675476074219,124.11363647460938],["Q",112.12675476074219,124.13363647460938,113.60407257080078,124.38578796386719],["Q",115.08139038085938,124.637939453125,129.67285919189453,126.5408935546875],["Q",144.2643280029297,128.44384765625,155.3434295654297,128.9103240966797],["Q",166.4225311279297,129.37680053710938,179.17871856689453,129.87220764160156],["Q",191.93490600585938,130.36761474609375,205.73927307128906,130.23980712890625],["Q",219.54364013671875,130.11199951171875,232.09017944335938,130.11199951171875],["Q",244.63671875,130.11199951171875,252.19613647460938,130.11199951171875],["Q",259.75555419921875,130.11199951171875,268.36541748046875,130.11199951171875],["Q",276.97528076171875,130.11199951171875,281.33123779296875,130.27633666992188],["Q",285.68719482421875,130.440673828125,287.1643981933594,130.6179656982422],["Q",288.6416015625,130.79525756835938,288.73095703125,131.10787963867188],["Q",288.8203125,131.42050170898438,288.5686950683594,132.12477111816406],["Q",288.31707763671875,132.82904052734375,286.46014404296875,134.54855346679688],["Q",284.60321044921875,136.26806640625,280.64649963378906,138.7935791015625],["Q",276.6897888183594,141.319091796875,270.4371795654297,144.73851013183594],["Q",264.1845703125,148.15792846679688,255.91943359375,152.1817169189453],["Q",247.654296875,156.20550537109375,239.2203826904297,160.2581329345703],["Q",230.78646850585938,164.31076049804688,223.93263244628906,167.53611755371094],["Q",217.07879638671875,170.761474609375,209.48748779296875,174.66256713867188],["Q",201.89617919921875,178.56365966796875,196.01742553710938,181.93670654296875],["Q",190.138671875,185.30975341796875,187.5118865966797,186.9879913330078],["Q",184.88510131835938,188.66622924804688,182.8004608154297,190.75083923339844],["Q",180.7158203125,192.83544921875,179.9318084716797,194.22262573242188],["Q",179.14779663085938,195.60980224609375,179.03955841064453,196.58416748046875],["Q",178.9313201904297,197.55853271484375,179.07373809814453,198.08058166503906],["Q",179.21615600585938,198.60263061523438,180.17774200439453,199.39454650878906],["Q",181.1393280029297,200.18646240234375,183.94271087646484,201.2647247314453],["Q",186.74609375,202.34298706054688,190.78646850585938,203.39346313476562],["Q",194.82684326171875,204.44393920898438,200.30323791503906,205.3417205810547],["Q",205.77963256835938,206.239501953125,209.7833709716797,206.88009643554688],["Q",213.787109375,207.52069091796875,219.173828125,208.5980224609375],["Q",224.560546875,209.67535400390625,228.4039764404297,210.79638671875],["Q",232.24740600585938,211.91741943359375,234.1173553466797,213.11941528320312],["Q",235.9873046875,214.3214111328125,236.56494140625,215.59239196777344],["Q",237.142578125,216.86337280273438,235.68832397460938,220.28077697753906],["Q",234.23406982421875,223.69818115234375,223.52850341796875,231.32589721679688],["Q",212.82293701171875,238.95361328125,198.29363250732422,245.5918426513672],["Q",183.7643280029297,252.23007202148438,175.92285919189453,254.94845581054688],["Q",168.08139038085938,257.6668395996094,162.64258575439453,260.06358337402344],["Q",157.2037811279297,262.4603271484375,154.13069915771484,264.3042297363281],["Q",151.0576171875,266.14813232421875,149.6827850341797,267.27294921875],["Q",148.30795288085938,268.39776611328125,148.2623748779297,268.7627258300781],["Q",148.216796875,269.127685546875,148.5294647216797,269.26165771484375],["Q",148.84213256835938,269.3956298828125,150.41016387939453,269.75750732421875],["Q",151.9781951904297,270.119384765625,155.39502716064453,270.574951171875],["Q",158.81185913085938,271.030517578125,163.05030059814453,271.3565368652344],["Q",167.2887420654297,271.68255615234375,171.64453887939453,271.6003723144531],["Q",176.00033569335938,271.5181884765625,178.74887084960938,271.5886535644531],["Q",181.49740600585938,271.65911865234375,182.60678100585938,271.65911865234375],["L",183.73615600585939,271.65911865234375]]},{"type":"textbox","version":"4.0.0-rc.1","originX":"left","originY":"top","left":217.18,"top":310.25,"width":216.67,"height":56.5,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1.85,"scaleY":1.85,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","skewX":0,"skewY":0,"text":"Something","fontSize":50,"fontWeight":"normal","fontFamily":"xanhMono","fontStyle":"normal","lineHeight":1.16,"underline":false,"overline":false,"linethrough":false,"textAlign":"left","textBackgroundColor":"","charSpacing":0,"minWidth":20,"splitByGrapheme":false,"styles":{}},{"type":"path","version":"4.0.0-rc.1","originX":"left","originY":"top","left":-18.4,"top":271.84,"width":589.83,"height":326,"fill":null,"stroke":"#e4e600","strokeWidth":9,"strokeDashArray":null,"strokeLineCap":"round","strokeDashOffset":0,"strokeLineJoin":"round","strokeMiterLimit":10,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","skewX":0,"skewY":0,"path":[["M",119.1662265625,468.35379296875],["Q",119.1572265625,468.36279296875,117.61100769042969,469.8446044921875],["Q",116.06478881835938,471.326416015625,112.77735137939453,474.28509521484375],["Q",109.48991394042969,477.2437744140625,105.05452728271484,481.7735900878906],["Q",100.619140625,486.30340576171875,96.7216796875,491.5316467285156],["Q",92.82421875,496.7598876953125,89.94319915771484,502.15008544921875],["Q",87.06217956542969,507.540283203125,85.35645294189453,512.8372192382812],["Q",83.65072631835938,518.1341552734375,83.37191772460938,524.1749267578125],["Q",83.09310913085938,530.2156982421875,83.92269897460938,536.1153869628906],["Q",84.75228881835938,542.0150756835938,87.33350372314453,547.3616638183594],["Q",89.91471862792969,552.708251953125,94.28255462646484,556.9832763671875],["Q",98.650390625,561.25830078125,103.36344909667969,563.8370971679688],["Q",108.07650756835938,566.4158935546875,115.91797637939453,569.2388305664062],["Q",123.75944519042969,572.061767578125,132.4371795654297,573.6687622070312],["Q",141.1149139404297,575.2757568359375,154.7096405029297,575.6569213867188],["Q",168.3043670654297,576.0380859375,186.82129669189453,574.5914306640625],["Q",205.33822631835938,573.144775390625,220.0592498779297,570.9103698730469],["Q",234.7802734375,568.6759643554688,256.0660858154297,564.5113220214844],["Q",277.3518981933594,560.3466796875,298.1277770996094,556.2221069335938],["Q",318.9036560058594,552.0975341796875,336.36720275878906,548.2640380859375],["Q",353.83074951171875,544.4305419921875,363.09539794921875,542.0040893554688],["Q",372.36004638671875,539.57763671875,381.68719482421875,537.0237731933594],["Q",391.01434326171875,534.4699096679688,395.6150817871094,532.9363403320312],["Q",400.2158203125,531.4027709960938,400.8035583496094,531.1088562011719],["Q",401.39129638671875,530.81494140625,400.86476135253906,531.0542907714844],["Q",400.3382263183594,531.2936401367188,396.6106872558594,532.5626525878906],["Q",392.8831481933594,533.8316650390625,384.12062072753906,537.1175842285156],["Q",375.35809326171875,540.4035034179688,366.1419372558594,543.5125427246094],["Q",356.92578125,546.62158203125,348.2257537841797,549.4490966796875],["Q",339.5257263183594,552.276611328125,326.28321838378906,557.0336303710938],["Q",313.04071044921875,561.7906494140625,302.08595275878906,566.4855041503906],["Q",291.1311950683594,571.1803588867188,284.6180114746094,575.3529357910156],["Q",278.1048278808594,579.5255126953125,275.17042541503906,582.622802734375],["Q",272.23602294921875,585.7200927734375,271.4744567871094,587.4336547851562],["Q",270.712890625,589.147216796875,270.712890625,591.1693115234375],["Q",270.712890625,593.19140625,271.5379333496094,594.841552734375],["Q",272.36297607421875,596.49169921875,274.80714416503906,598.14501953125],["Q",277.2513122558594,599.79833984375,281.52491760253906,600.9489135742188],["Q",285.79852294921875,602.0994873046875,290.5696716308594,602.2698974609375],["Q",295.3408203125,602.4403076171875,305.9363708496094,600.8279418945312],["Q",316.53192138671875,599.215576171875,330.10890197753906,594.6899108886719],["Q",343.6858825683594,590.1642456054688,358.53273010253906,583.3537902832031],["Q",373.37957763671875,576.5433349609375,382.26515197753906,571.7068481445312],["Q",391.1507263183594,566.870361328125,400.4806365966797,560.805908203125],["Q",409.810546875,554.741455078125,414.8219451904297,550.2119750976562],["Q",419.8333435058594,545.6824951171875,421.4612731933594,542.9444885253906],["Q",423.0892028808594,540.2064819335938,422.90187072753906,538.4567565917969],["Q",422.71453857421875,536.70703125,421.24530029296875,535.0375671386719],["Q",419.77606201171875,533.3681030273438,413.32814025878906,530.5348815917969],["Q",406.8802185058594,527.70166015625,392.0823669433594,524.2664489746094],["Q",377.2845153808594,520.8312377929688,349.7179412841797,517.1903686523438],["Q",322.1513671875,513.5494995117188,285.54248046875,510.0256652832031],["Q",248.93359375,506.5018310546875,221.8505859375,504.9591369628906],["Q",194.767578125,503.41644287109375,158.15869140625,500.47991943359375],["Q",121.5498046875,497.54339599609375,91.6904296875,494.1257629394531],["Q",61.8310546875,490.7081298828125,41.66943359375,487.5484619140625],["Q",21.5078125,484.3887939453125,12.698894500732422,481.6700439453125],["Q",3.8899765014648438,478.9512939453125,-2.430500030517578,475.39599609375],["Q",-8.7509765625,471.8406982421875,-11.1064453125,468.8569641113281],["Q",-13.4619140625,465.87322998046875,-13.745929718017578,463.0339660644531],["Q",-14.029945373535156,460.1947021484375,-12.739093780517578,457.0057373046875],["Q",-11.4482421875,453.8167724609375,-5.424152374267578,446.5876770019531],["Q",0.5999374389648438,439.35858154296875,13.577312469482422,427.5097961425781],["Q",26.5546875,415.6610107421875,42.82666015625,401.69158935546875],["Q",59.0986328125,387.72216796875,76.22396087646484,373.7105712890625],["Q",93.34928894042969,359.698974609375,102.92985534667969,352.1800537109375],["Q",112.51042175292969,344.6611328125,123.05078887939453,336.755859375],["Q",133.59115600585938,328.8505859375,141.2013397216797,323.1153259277344],["Q",148.8115234375,317.38006591796875,153.55126953125,313.56976318359375],["Q",158.291015625,309.75946044921875,160.24935150146484,307.9410400390625],["Q",162.2076873779297,306.12261962890625,163.49512481689453,304.6419677734375],["Q",164.78256225585938,303.16131591796875,165.01986694335938,302.68670654296875],["Q",165.25717163085938,302.21209716796875,163.1051483154297,301.7993469238281],["Q",160.953125,301.3865966796875,154.20703125,301.3865966796875],["Q",147.4609375,301.3865966796875,137.10042572021484,301.9558563232422],["Q",126.73991394042969,302.5251159667969,114.61247253417969,303.85911560058594],["Q",102.48503112792969,305.193115234375,92.76155853271484,306.7578125],["Q",83.0380859375,308.322509765625,69.69743347167969,311.4988250732422],["Q",56.356781005859375,314.6751403808594,46.68392562866211,317.5995330810547],["Q",37.011070251464844,320.52392578125,32.665855407714844,322.5687255859375],["Q",28.320640563964844,324.613525390625,27.893558502197266,324.9457244873047],["Q",27.466476440429688,325.2779235839844,28.103195190429688,325.4738464355469],["Q",28.739913940429688,325.6697692871094,33.229007720947266,325.6697692871094],["Q",37.718101501464844,325.6697692871094,49.006839752197266,324.8466491699219],["Q",60.29557800292969,324.0235290527344,85.57015228271484,320.6979217529297],["Q",110.8447265625,317.372314453125,143.98046875,312.66552734375],["Q",177.1162109375,307.958740234375,198.30062866210938,304.58154296875],["Q",219.48504638671875,301.204345703125,248.83790588378906,296.19287109375],["Q",278.1907653808594,291.181396484375,302.1556091308594,287.45713806152344],["Q",326.1204528808594,283.7328796386719,338.75294494628906,281.8751983642578],["Q",351.38543701171875,280.01751708984375,365.60890197753906,278.59515380859375],["Q",379.8323669433594,277.17279052734375,387.91700744628906,276.75819396972656],["Q",396.00164794921875,276.3435974121094,399.18360900878906,276.3435974121094],["Q",402.3655700683594,276.3435974121094,402.4088592529297,276.6034393310547],["Q",402.4521484375,276.86328125,401.3873748779297,277.4797821044922],["Q",400.3226013183594,278.0962829589844,396.39894104003906,279.21730041503906],["Q",392.47528076171875,280.33831787109375,386.94842529296875,281.42559814453125],["Q",381.42156982421875,282.51287841796875,367.9539489746094,284.54571533203125],["Q",354.486328125,286.57855224609375,337.6471405029297,288.80519104003906],["Q",320.8079528808594,291.0318298339844,303.71339416503906,293.83424377441406],["Q",286.61883544921875,296.63665771484375,272.2376403808594,299.5128936767578],["Q",257.8564453125,302.3891296386719,250.919921875,303.85459899902344],["Q",243.9833984375,305.320068359375,238.5966796875,306.666748046875],["Q",233.2099609375,308.013427734375,231.7916717529297,308.4861755371094],["Q",230.37338256835938,308.95892333984375,230.64942932128906,309.31695556640625],["Q",230.92547607421875,309.67498779296875,233.49237060546875,310.16058349609375],["Q",236.05926513671875,310.64617919921875,245.89454650878906,311.20501708984375],["Q",255.72982788085938,311.76385498046875,271.6822967529297,312.30462646484375],["Q",287.634765625,312.84539794921875,300.6005859375,313.21937561035156],["Q",313.56640625,313.5933532714844,329.775390625,313.8657684326172],["Q",345.984375,314.13818359375,356.6949920654297,314.9443359375],["Q",367.4056091308594,315.75048828125,373.72853088378906,316.3167419433594],["Q",380.05145263671875,316.88299560546875,382.36866760253906,317.49635314941406],["Q",384.6858825683594,318.1097106933594,384.9676208496094,318.5324401855469],["Q",385.2493591308594,318.9551696777344,384.79298400878906,320.21009826660156],["Q",384.33660888671875,321.46502685546875,380.96925354003906,324.74818420410156],["Q",377.6018981933594,328.0313415527344,366.9298553466797,333.9737243652344],["Q",356.2578125,339.9161071777344,336.5144958496094,348.7080535888672],["Q",316.77117919921875,357.5,299.05877685546875,364.8191833496094],["Q",281.34637451171875,372.13836669921875,252.87664794921875,384.91326904296875],["Q",224.40692138671875,397.68817138671875,196.40902709960938,412.7922668457031],["Q",168.4111328125,427.8963623046875,154.9645233154297,437.5010986328125],["Q",141.51791381835938,447.1058349609375,130.62110137939453,459.22845458984375],["Q",119.72428894042969,471.35107421875,115.92383575439453,481.4859313964844],["Q",112.12338256835938,491.62078857421875,112.01612091064453,500.40570068359375],["Q",111.90885925292969,509.19061279296875,114.54476165771484,517.3091125488281],["Q",117.1806640625,525.4276123046875,121.15771484375,531.1507568359375],["Q",125.134765625,536.8739013671875,133.92952728271484,545.54638671875],["Q",142.7242889404297,554.2188720703125,154.49105072021484,562.3650512695312],["Q",166.2578125,570.51123046875,179.8663787841797,577.1174011230469],["Q",193.47494506835938,583.7235717773438,208.34815979003906,587.5746765136719],["Q",223.22137451171875,591.42578125,235.55844116210938,592.7693786621094],["Q",247.8955078125,594.1129760742188,269.48974609375,594.8842163085938],["Q",291.083984375,595.6554565429688,317.181640625,595.4870910644531],["Q",343.279296875,595.3187255859375,370.3624725341797,594.461669921875],["Q",397.4456481933594,593.6046142578125,423.54331970214844,591.9208984375],["Q",449.6409912109375,590.2371826171875,466.3628234863281,589.5462036132812],["Q",483.08465576171875,588.855224609375,503.9095153808594,588.2471923828125],["Q",524.734375,587.63916015625,538.3291015625,587.00390625],["Q",551.923828125,586.36865234375,557.5413513183594,585.9156188964844],["Q",563.1588745117188,585.4625854492188,567.6479797363281,585.0469360351562],["Q",572.1370849609375,584.6312866210938,573.7959289550781,584.4469909667969],["Q",575.4547729492188,584.2626953125,573.0304565429688,584.2193603515625],["Q",570.6061401367188,584.176025390625,563.7189331054688,584.467041015625],["Q",556.8317260742188,584.758056640625,548.2218627929688,585.3958435058594],["Q",539.6119995117188,586.0336303710938,528.9013977050781,586.0336303710938],["Q",518.1907958984375,586.0336303710938,509.5809326171875,586.0336303710938],["Q",500.9710693359375,586.0336303710938,496.3408508300781,586.2019653320312],["Q",491.71063232421875,586.3703002929688,489.14373779296875,586.3703002929688],["Q",486.57684326171875,586.3703002929688,485.6025695800781,586.2079467773438],["Q",484.6282958984375,586.0455932617188,484.4980773925781,585.7853393554688],["Q",484.36785888671875,585.5250854492188,484.60516357421875,585.0504760742188],["Q",484.84246826171875,584.5758666992188,486.6645812988281,583.0912170410156],["Q",488.4866943359375,581.6065673828125,492.4510498046875,578.6764221191406],["Q",496.4154052734375,575.7462768554688,501.2088623046875,572.2433471679688],["Q",506.0023193359375,568.7404174804688,512.3120422363281,564.1607971191406],["Q",518.6217651367188,559.5811767578125,525.9602966308594,553.7760314941406],["Q",533.298828125,547.9708862304688,540.36767578125,542.0983276367188],["Q",547.4365234375,536.2257690429688,551.2283630371094,533.0371398925781],["Q",555.0202026367188,529.8485107421875,559.3693237304688,526.2242736816406],["Q",563.7184448242188,522.6000366210938,567.0014953613281,520.2778930664062],["Q",570.2845458984375,517.9557495117188,572.4350891113281,516.4988708496094],["Q",574.5856323242188,515.0419921875,575.2545776367188,514.63037109375],["L",575.9325229492188,514.20975]]}]}

json-url compressed

This is a compressed version of the FabricJS JSON, using the recommended json-url package. It's using lzma compression algorithm, which seemed to compress the most, resulting in 1804 characters.

The idea here would be to compress the user's annotations JSON, and include it as a query parameter in a url a user could share. So it'd look something like: https://loc.sa.something.org?canvasData=[VALUE BELOW GOES HERE]

XQAAAAIKCQAAAAAAAABBKcrGU8hqLFnqZuoRloe2ifFZ9nH7RDdtEytgo4g8REywSf-CyF0qlGy2tzDAMFS0M2B3aX4_jVEEPs95wHTzW5ot4kcSZTA_fNV7sainYeaGZWkUKbrkNFxKKzD-S6poK0fe-K3crvgDa7eABnAvOQksSX5cZHZOph5eJk8rMPkEKMPiRHk4ioAXhGqOZ3_Thg-6UdaOC8i5TZOBw7J70_ft7AOwVddSst-r-nALM_vri3LnRdbwR-DV4olpBI1sYhhu8G__bZQQ2DH057Q5YKkuE2oTMry0JtV-vLBtBp641BD3DLMVPfHxsWcRGIrXxCNuifzEqOyKGyO03UPW7uNZSLrIc9rlfkU9UBQ2zR9vHSexA2UxZOZKCyUpHrsQsRcmuHl8h0KeKaG9WauAEn-sX6OoPs98WYVo-YLbZWhXzs8dmUmItJIRblHX8V2SduxzlDseOppYsoUgr8gJgqviNWpPMT8PcMLTHccN6GXYWqg78cMVAiYX2AkI46RH5HVLm3dWobtxowymSBtm-02EIAHkYNyECrqzK4BqGpHiRUVYGRcqbdTGEy8YT16xhjRr1ZyQ7n6z-FrL112x-5WFnErIy16pdBbQ1Kk2TgD9Aw3NKky4BCWOIP9GcPNKoaQgsF4U-swS6UbEAJHlQ1crHJwmQqbzyTAb--mBf4BI3vIJp4DiXJcZtHuh8R0E6ZyRb0FPUdh6WwOoOBjJdcT5_ATyguO-Bdr-JhNju0nC3tlj-HDMnGXIVfQRMkL5akF3oVenv7yux99my6APgB0nTpibBymMahf1n4kne7A_gsYMRPnfcduo9cq6JGFLfecqyDCZtyY039tK1tqv2w6xMLDu_ZQLrUxTVeS25OiU8pZfl0nQwRwMoiV9Z4R8moq3Emb4Utr7T3iXh6IDiCzww3YVz8QsHdQfT2kQ6pup1SlVkdEuDZ6U8yCmzd7WZpx0a7pWyYsuwYz61xo7q2JNuxv13FXxNa5lG6AKONxhIKt2bx7mW9uH7Z989jWG_npisO3o47_NkoVnU9aN9umelK2LVIQ7nDSnbkqW8nEyE8r2QruM-GAuRysLVD4Ab8RiRftIMxj3WiMlPtGK19qlzq8pmRM8-T2UiBi4b8XBJzAqzxkjPKCt7TfdTBrlk1nDujzOLcwRtAO15HIm-LYgNJ8TVOmIroLciklF3l3LuUx5Sc2b3CJksr4LrNWli3ulbgkBrUAeUbMJJmRLDGYtUE-kx8Tnz9PgNTYlhOwsc8u6FLj2Q7kcQJzWyDcpS7KxJds2AthMbaZsViBk9DiIoJ09ABdRlj21u96HgE9ldZntXFtihzetSIAIuT3nZpnxHXkznC8NsueUrW3iD1k9O_4EaAySu1qeTipSVRbtdFBkCiQmR-Jc6ZiKmQrIGLfb8hoHIlgfJ4XGRzyzo0aERH6SiZHzVjmuZjBNnOYdney0pIRj4v9K2l5US1LWwLkfv3HO4DzoOhx-ehIGzUR2NXT7cGaghiDF9PEAL2ksrppeijVJ6xjcFwhNTwkyAdNlKMVdh_KkKVVsuGUlIxK4cCzsRJCLzUWFmI44iVA9Hi2Eczs2xBpz_iwoRbZSaD-3ksTz_dm9n_6qZJo96nQSb7dVdQnyYxEP8xowtXr-BnvUZxTha9BrxQui6xoJqRFyWQT1i34bHv8O2sh955kwUH3zBVP1k0dd4e0o0UvvQZndtaUQvNGFuoCkaeSxZbOeSIO418J7Yge_YB_1ZnqWHdBMxPZR5bYqAqKgRNK8OHbtI1v-gBKF

The 2 questions would be:

from loc-speculative-annotations.

adamjarling avatar adamjarling commented on July 3, 2024

Just merged a first draft of this into the live app. Seems to work ok thus far, but should stress test with a bunch of annotations and see at what point it falls down.

@jaimemears @CourtneyMcClellan You can test this out by creating a shared link URL, then pasting it into another browser tab/window.

image

from loc-speculative-annotations.

adamjarling avatar adamjarling commented on July 3, 2024

Closing for prototype phase

from loc-speculative-annotations.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.