PageSourceSearch

https://jeremie-hubert.notion.site/_assets/drawing-a3556fea41852313.js

js jeremie-hubert.notion.site collected 2026-10-09 23:03:56 UTC 16,592 bytes, 162 lines download raw bytes

1"use strict";(globalThis.rspackChunknotion_next=globalThis.rspackChunknotion_next||[]).push([[15140],{228401(e,t,r){r.r(t),r.d(t,{TldrawAdapter:()=>I}),r(533958),r(953925),r(435368),r(730330),r(976614),r(139583),r(159952);var o=r(635790);r(499468),r(586042),r(169187),r(726090),r(132457),r(219390),r(73168);var i=()=>r(547484);function*n(e){for(let[t,o]of(0,r(48697).WP)(e.added))yield[t,[void 0,o]];for(let[t,o]of(0,r(48697).WP)(e.updated))yield[t,o];for(let[t,o]of(0,r(48697).WP)(e.removed))yield[t,[o,void 0]]}class a{static fromSerializedSnapshot(e){let t=new a;return t.mergeSnapshot(e),t}added={};removed=new Set;add(e){this.added[e.id]=e,this.removed.delete(e.id)}remove(e){delete this.added[e],this.removed.add(e)}ignore(...e){for(let t of e)delete this.added[t],this.removed.delete(t)}mergeSnapshot(e){for(let[t,o]of(0,r(48697).WP)(e))o?this.add(i().v.deserialize(o)):this.remove(t)}hasChanges(){return this.removed.size>0||Object.keys(this.added).length>0}}class l{pendingChanges=[];getPendingIds(){if(0===this.pendingChanges.length)return new Set;this.pendingChanges.length>1&&(this.pendingChanges=[this.clear()]);let[e]=this.pendingChanges,t=new Set;for(let[r]of n(e))t.add(r);return t}add(e){this.pendingChanges.push(e)}clear(){let e=(0,r(338039).Dm)(this.pendingChanges);return this.pendingChanges=[],e}}var s=r(440302);function d(){let e=(0,r(960253).e)(),t=(0,o.useMemo)(()=>{let t="rgba(35, 131, 226, 1)",o="dark"===e;return{"--color-text":r(632079).Tj.text.primary,"--color-text-0":r(632079).Tj.text.primary,"--color-text-1":r(632079).Tj.text.primary,"--color-text-2":r(632079).Tj.text.secondary,"--color-text-3":r(632079).Tj.text.tertiary,"--color-accent":r(632079).Tj.palette.red["800"],"--color-focus":"rgba(35, 131, 226, 0.14)","--color-selection-stroke":t,"--color-selection-fill":"rgba(35, 131, 226, 0.025)","--color-brush-stroke":"transparent","--color-brush-fill":"rgba(35, 131, 226, 0.14)","--color-muted-2":r(632079).Tj.buttonHoveredBackground,"--color-selected":t,"--color-selected-contrast":r(632079).Tj.background.primary,"--color-text-selection":"rgba(35, 131, 226, 0.28)","--color-primary":r(632079).Tj.blue.background.accentPrimary,"--color-warn":r(632079).oZ.red,"--radius-0":"3px","--radius-1":"3px","--radius-2":"3px","--radius-3":"3px","--radius-4":"3px","--color-low":r(632079).Tj.popoverBackground,"--opacity-low":.93,"--radius-5":"6px","--color-panel":r(632079).Tj.popoverBackground,"--color-panel-contrast":"transparent","--color-divider":r(632079).Tj.border.secondaryTranslucent,"--shadow-2":r(632079).Tj.shadow.outline.lg,"--color-background":r(632079).Tj.background.primary,"--palette-black":r(632079).Tj.palette.gray["900"],"--palette-blue":o?r(632079).Tj.palette.blue["800"]:r(632079).Tj.palette.blue["500"],"--palette-green":o?r(632079).Tj.palette.green["800"]:r(632079).Tj.palette.green["500"],"--palette-grey":o?r(632079).Tj.palette.gray["700"]:r(632079).Tj.palette.gray["300"],"--palette-light-blue":o?r(632079).Tj.palette.blue["500"]:r(632079).Tj.palette.blue["200"],"--palette-light-green":o?r(632079).Tj.palette.green["500"]:r(632079).Tj.palette.green["300"],"--palette-red":o?r(632079).Tj.palette.red["800"]:r(632079).Tj.palette.red["500"],"--palette-light-red":o?r(632079).Tj.palette.red["500"]:r(632079).Tj.palette.red["300"],"--palette-violet":o?r(632079).Tj.palette.purple["800"]:r(632079).Tj.palette.purple["500"],"--palette-light-violet":o?r(632079).Tj.palette.purple["500"]:r(632079).Tj.palette.purple["300"],"--palette-orange":o?r(632079).Tj.palette.orange["700"]:r(632079).Tj.palette.orange["500"],"--palette-yellow":o?r(632079).Tj.palette.yellow["800"]:r(632079).Tj.palette.yellow["500"],"--palette-white":r(632079).Tj.background.primary}},[e]),i=(0,o.useMemo)(()=>{let e=".rs-container {";for(let[r,o]of Object.entries(t))void 0!==o&&(e+=`
2  ${r}: ${o};`);return{__html:e+=`
3}
4		.tlui-button {
5			text-shadow: none;
6		}
7
8		.tlui-slider__range {
9			background: var(--color-selection-stroke);
10		}
11
12		/* Try to make menu items look like Notion menu items */
13		.tlui-menu__button {
14			height: 28px;
15			line-height: 150%;
16			font-size: ${r(699422).J.UIRegular.desktop}px;
17			padding: 0 12px;
18		}
19
20		.tlui-menu__checkbox-item {
21			padding-left: 28px;
22		}
23
24		.tlui-menu__checkbox-item__check .tlui-icon__small {
25			width: 18px;
26			height: 18px;
27		}
28
29		.tlui-menu__button::after {
30			width: calc(100% - 8px);
31			height: 100%;
32			left: 4px;
33			right: 4px;
34			bottom: 0;
35			top: 0;
36		}
37
38		.tlui-menu__button:nth-child(n + 2) {
39			margin-top: 0;
40		}
41
42		.tlui-menu__button:nth-last-child(n + 2) {
43			margin-bottom: 0;
44		}
45
46		.tlui-menu__group {
47			padding: 4px 0;
48		}
49
50		.tlui-menu__group[data-size='medium'] {
51			min-width: 200px;
52		}
53
54		/* Styling for how keyboard shortcuts are rendered next to menu items */
55		.tlui-kbd {
56			font-size: ${r(699422).J.UISmall.desktop}px;
57			color: var(--color-text-3);
58			display: flex;
59			gap: 0;
60		}
61
62		.tlui-kbd > span {
63			padding: 0;
64			margin: 0;
65		}
66
67		.tlui-kbd span + span::before {
68			content: '+';
69		}
70
71		.rs-error-boundary__content .rs-error-boundary__refresh {
72			color: var(--color-background);
73		}
74
75		/* Styling for the Tools panel */
76		.tlui-toolbar__tools {
77			border-radius: 999px;
78			padding: 0 8px;
79		}
80
81		.tlui-button {
82			--color-selected: transparent;
83			--color-selected-contrast: var(--color-selection-stroke);
84		}
85
86		.tlui-button:not(:disabled):hover::after {
87			background: var(--color-muted-2);
88		}
89
90		/* Styling for "low" toolbars like the top bar and zoom */
91		.tlui-menu-zone::before,
92		.tlui-navigation-zone,
93		.tlui-navigation-zone::before,
94		.tlui-debug-panel {
95			border: none;
96			border-radius: var(--radius-5);
97			opacity: var(--opacity-low);
98		}
99
100		.tlui-menu-zone::before,
101		.tlui-navigation-zone::before,
102		.tlui-debug-panel
103		{
104			inset: 0;
105			box-shadow: var(--shadow-1);
106		}
107
108		.tlui-help-menu__button {
109			display: none;
110		}
111		.tlui-help-menu__button::before  {
112			box-shadow: var(--shadow-1);
113			opacity: var(--opacity-low);
114		}
115
116		/* Styling for extra-small width controls */
117		.tlui-toolbar__extras__controls {
118			margin-left: 20px;
119		}
120
121		.tlui-toolbar__extras__controls,
122		.tlui-toolbar__extras__controls::before
123		{
124			border: none;
125			border-radius: 12px;
126			border-bottom-left-radius: 0px;
127			border-bottom-right-radius: 0px;
128		}
129
130
131		.tlui-toolbar__extras__controls::before {
132			inset: 0;
133			box-shadow: var(--shadow-1);
134		}
135
136		/* Make dialogs fit */
137		.tlui-dialog__content {
138			max-height: 80%;
139		}
140
141		/* Hide the "Page" menu */
142		.tlui-popover:has(.tlui-page-menu__trigger) {
143			display: none;
144		}
145
146		.tlui-popover:has(.tlui-page-menu__trigger) + .tlui-menu-zone__divider {
147			display: none;
148		}
149
150		/* Disable spurious text selection */
151		.rs-container input, *[contenteditable] .rs-container, *[contenteditable] .rs-container * {
152			user-select: none;
153			-webkit-user-select: none;
154		}
155
156		/* Style text selection inside text components */
157		.rs-text-input::selection {
158			background: var(--color-text-selection);
159			color: currentColor;
160			text-shadow: none;
161		}
162		`}},[t]);return(0,s.jsx)("style",{dangerouslySetInnerHTML:i})}var u=()=>r(726668),c=()=>r(83388),p=()=>r(807825),h=()=>r(832375);function g(){}let m=3*r(419681).Xb,f=Number(r(419681).TD),b=r(764657).literal(0),y=r(764657).record(r(764657).string(),r(764657).union([b,r(764657).string()])),v=r(764657).record(r(764657).string(),r(764657).union([b,y])),w=[u().dVE,u().wOc,u().koU],x=2*r(419681).TD,_=r(963752).i5Z.createId(),k=(0,r(473068).Z)({format:e=>e}),T=(0,r(202146).exposeDebugValue)("drawings",{});function j(...e){[...e]}function S(...e){[...e]}function I(e){let{store:t}=e,b="dark"===(0,r(960253).e)(),[y,I]=(0,o.useState)(void 0),A=(0,o.useCallback)(e=>{I(e)},[]);(0,o.useEffect)(()=>{y&&(e.disabled?y.enableReadOnlyMode():y.updateUserDocumentSettings({isReadOnly:!1}))},[y,e.disabled]);let P=(0,o.useRef)();(0,o.useEffect)(()=>{if(e.isEditing){var t,r;null==y||y.focus(),null==y||y.updateInstanceState({isFocusMode:(null==(t=P.current)?void 0:t.isFocusMode)??!1}),null==y||y.setSelectedIds((null==(r=P.current)?void 0:r.shapeIds)??[])}else y&&(P.current={shapeIds:y.selectedIds,isFocusMode:y.instanceState.isFocusMode},y.blur(),y.updateInstanceState({isFocusMode:!0}),y.setSelectedTool("hand"),y.selectNone())},[y,e.isEditing]),(0,o.useEffect)(()=>{y&&requestAnimationFrame(()=>{E.call(y,{inset:0,include:[y.viewportPageBounds]})})},[y]);let F=(0,o.useCallback)(e=>{throw r(647095).f1((0,s.jsx)(r(327219).sA,{id:"drawing.images-not-supported",defaultMessage:"Images are not supported in drawings yet"})),Error("Image assets are not supported yet.")},[]),U=function(){let e=r(963752).UFg.default;if(!V){V=!0;let t=e.TLShape.validate;e.TLShape.validate=function(e){let o=t.call(this,e);return o.props&&"url"in o.props&&o.props.url&&(o.props.url=(0,r(392096).q7)(o.props.url)??"https://www.notion.so/product"),o}}return e}(),{syncedStore:L,userId:N,instanceId:O}=function({store:e,config:t}){let a=(0,r(533992).v3)(),[s]=(0,o.useState)(()=>z),d=(0,o.useMemo)(()=>{let t=e.userId;
162return t?r(963752).i5Z.createCustomId(t):_},[e.userId]),u=(0,o.useMemo)(()=>{let t=`tab/${s}/store/${e.key}`;return r(963752).koU.createCustomId(t)},[s,e.key]),[c,p]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let o=`block/${e.id}/store/${e.key}/effect/${C++}`;p({id:o,syncedStore:{status:"loading"}});let s=e=>{p(t=>(null==t?void 0:t.id)===o?{id:o,syncedStore:e}:t)},c=t.createStore({userId:d,instanceId:u}),h=e=>{let t=(0,r(338039)._e)(c.schema.serialize(),e);if(0===t)return;let o=Error(t<0?"This drawing is from a newer version of Notion. Update Notion to edit it.":"This drawing is from an older version of Notion. Reload to edit it.");throw j("schema mismatch",{error:o,incomingSchema:e,ourSchema:c.schema.serialize()}),s({status:"error",error:o}),o},g=e.getDrawingStore(),m=e.getKeyStore("version"),f={drawingStore:g,schemaStore:g.getKeyStore("schema"),snapshotStore:g.getKeyStore("snapshot"),typeStore:g.getKeyStore("type"),getLastVersion:()=>m.isReady()?m.getValue()??-1:-1},b=!1,y=new l,v=()=>{if(b)return void j("skip update: ignoreNotionUpdates");let e=f.drawingStore.getValue();e?(e.schema&&h(e.schema),c.mergeRemoteChanges(()=>{let t=y.getPendingIds(),o=[],n=[];for(let[a,l]of(0,r(48697).WP)(e.snapshot||{})){if(t.has(a)){j("skip record: ahead:",{id:a});continue}if(!l){o.push(a);continue}n.push(i().v.deserialize(l))}j("apply updates",{removedIds:o,updatedRecords:n,pendingDiffIds:t}),c.remove(o),c.put(n)})):j("skip update: no Notion drawingValue")},w=(t=!1)=>{let o=y.clear(),l=f.getLastVersion(),d=e.getSpaceId();(0,r(323517).createAndCommit)({environment:a,userAction:"drawing.persist",canUndo:!0,userId:e.userId,cellTarget:d?{spaceWithId:d}:void 0,perform(e){try{b=!0,S("begin persist",{squashed:o,initialVersion:l});let a=g.getValue();if(a&&"tldraw"!==a.type){let e=Error(`Unknown drawing value type: ${a.type}`);throw s({status:"error",error:e}),e}if(f.typeStore.isReady()&&!f.typeStore.getValue()){let t="tldraw";S("persist type:",t),(0,r(305625).K)({store:f.drawingStore,value:{type:t},transaction:e})}let d=f.schemaStore.getValue(),u=t||f.schemaStore.isReady()&&!d;if(u){let t=c.schema.serialize();S("persist schema:",t),(0,r(305625).K)({value:t,store:f.schemaStore,transaction:e})}d&&!t&&h(d);let p={},m=!1,y=u||f.snapshotStore.isReady()&&!f.snapshotStore.getValue();for(let[e,[,t]]of(y&&(m=!0,p=Object.fromEntries((0,r(48697).WP)(c.serialize()).filter(([e])=>M(e)).map(([e,t])=>[e,i().v.serialize(t)]))),n(o)))M(e)&&(m=!0,t?p[e]=i().v.serialize(t):p[e]=0);m&&(S("persist snapshot update:",p,y),(0,r(787932).z)({store:f.snapshotStore,transaction:e,data:p}))}finally{b=!1,S("end persist",{initialVersion:l,finalVersion:f.getLastVersion()})}}})},_=(0,r(960408).nF)(w,x),k=!1;(async()=>{try{if(await g.load(),k)return;let e=g.getValue();if(e){let t={};for(let[o,n]of(0,r(48697).WP)(e.snapshot||{}))n&&(t[o]=i().v.deserialize(n));let o=e.schema?(0,r(338039)._e)(e.schema,c.schema.serialize()):0,n=c.schema.migrateStoreSnapshot(t,e.schema??c.schema.serializeEarliestVersion());if("error"===n.type)throw j("migration error:",n),Error(`This version of Notion isn't compatible with this drawing (${n.reason})`);c.mergeRemoteChanges(()=>{c.put(Object.values(t),"initialize")}),0!==o&&w(!0)}g.addListener(v),s({status:"synced",store:c})}catch(e){throw s({status:"error",error:(0,r(324497).A)(e)}),e}})();let T=c.listen(({changes:e,source:t})=>{S("changes:",t,e),"user"===t&&(y.add(e),_())});return()=>{k=!0,p(e=>(null==e?void 0:e.id)===o?null:e),g.removeListener(v),T()}},[u,t,d,e,a]),{userId:d,instanceId:u,syncedStore:(null==c?void 0:c.syncedStore)??{status:"loading"}}}({store:t,config:U});!function(e){let{blockStore:t,app:s}=e,d=(0,r(327219).tz)(),b=t.userId,y=t.id,x=(0,r(379736).vB)(y),_=null==s?void 0:s.instanceId,k=null==s?void 0:s.store,T=(0,r(579993).K8)(()=>!!(s&&_&&b&&y&&(0,r(880927).A)(x)&&t.canEdit()),[s,y,t,x,_,b]);(0,o.useEffect)(()=>{if(!T||!s||!_||!b||!k)return;let e=new l,o=r(48091).Ay.addListener({key:x,authorizationToken:void 0,listener:function({value:o}){!function(e){let t,{blockStore:o,tldrawStore:i,maybePresenceData:n,pendingChanges:l,intl:s}=e;try{t=(0,r(915367).n)(v,n)}catch(e){return}let d=new a;for(let[e,i]of(0,r(48697).WP)(t))e!==o.userId&&i&&d.mergeSnapshot(i);if(d.ignore(...l.getPendingIds()),d.hasChanges()){for(let e of Object.values(d.added))if(u().dVE.isInstance(e)){let{userId:t}=e,r=t.split(":",2)[1];if(r&&(0,c().uj)(r)){let e=p().L.createChildStore(o,{table:h().oo9,id:r}).getDisplayName(s);d.add(u().i5Z.create({id:t,name:e}))}}i.mergeRemoteChanges(()=>{i.put(Object.values(d.added)),i.remove(Array.from(d.removed))})}}({blockStore:t,tldrawStore:k,maybePresenceData:o,pendingChanges:e,intl:d})},subscriptionId:_}),y=(0,r(960408).nF)(()=>{!function(e){let{blockStore:t,diff:o}=e,{userId:a}=t;if(!a)return;let l=(0,r(379736).vB)(t.id),s={},d=!1;for(let[e,[,t]]of n(o))if(function(e){return w.some(t=>t.isId(e))}(e)){d=!0;let r=t?i().v.serialize(t):0;s[e]=r}d&&r(48091).Ay.updateField({key:l,field:a,updates:s,ttl:m})}({blockStore:t,diff:e.clear()})},f),j=k.listen(function({changes:t,source:r}){"user"===r&&(e.add(t),y())});return r(48091).Ay.onDisconnect(x,[{operation:"setField",key:x,field:b,value:0,ttl:m}],_),g("subscribed",x,_),()=>{j(),o&&r(48091).Ay.removeListener(o),r(48091).Ay.setField({key:x,field:b,value:0,ttl:m}),r(48091).Ay.clearOnDisconnect(x,_)}},[T,t.id,x,_,t,d,s,b,k])}({blockStore:t,app:y}),(0,o.useEffect)(()=>
162{if(y)return T[O]=y,()=>{delete T[O]}},[O,y]);let R={isDarkMode:b,config:U,assetUrls:k,overrides:(0,o.useMemo)(()=>{let e=null;return[{helpMenu(t,o,i){let n=o.find(e=>"group"===e.type&&"top"===e.id);return n&&(e=(0,r(963752).dMu)("help",...n.children)),[]}},{menu(t,r,o){for(let{item:t,parent:o,index:i}of(r.push(e),function*(e){let t=[];yield*function* e(r){for(let o=0;o<r.length;o++){let i=r[o];yield{index:o,item:i,path:t,parent:t.at(-1)},("group"===i.type||"submenu"===i.type)&&(t.push(i),yield*e(i.children),t.pop())}}(e)}(r)))"toggle-dark-mode"===t.id&&o&&o.children.splice(i,1),"LANGUAGE_MENU"===t.id&&o&&o.children.splice(i,1),"insert-media"===t.id&&o&&o.children.splice(i,1);return r},toolbar:(e,t,r)=>t.filter(e=>"asset"!==e.id),actions(e,t,r){let o=t["toggle-dark-mode"];return o&&(o.kbd=void 0),t}}]},[])};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d,{}),(0,s.jsx)(r(963752).O75,{onMount:A,instanceId:O,userId:N,store:L,...R,onCreateAssetFromFile:F,children:(0,s.jsx)(r(963752).xM4,{...R,children:(0,s.jsx)(r(963752).tzH,{children:(0,s.jsx)(r(963752).HlI,{})})})})]})}let z=r(92513).JW(),C=0;function M(e){return![r(963752).xlB,r(963752).Mss,r(963752).i5Z,r(963752).dVE,r(963752).Vbk,r(963752).koU,r(963752).wOc].some(t=>t.isId(e))}function E(e){if(!this.canMoveCamera)return this;let t=[...this.shapeIds];if(t.length<=0)return this;let o=(0,r(960408).oE)(t.map(e=>this.getPageBoundsById(e)));null!=e&&e.include&&o.push(...e.include);let i=r(891315).Ax.Common(o);return A.call(this,i.minX,i.minY,i.width,i.height,void 0,e),this}function A(e,t,o,i,n,a){if(!this.canMoveCamera)return this;let{viewportScreenBounds:l}=this,s=(null==a?void 0:a.inset)??Math.min(256,.28*l.width),d=(0,r(891315).qE)(Math.min((l.width-s)/o,(l.height-s)/i),.1,8);return void 0!==n&&(d=Math.min(n,d)),null!=a&&a.duration?this.animateCamera(-e+(l.width-o*d)/2/d,-t+(l.height-i*d)/2/d,d,a):this.setCamera(-e+(l.width-o*d)/2/d,-t+(l.height-i*d)/2/d,d),this}let V=!1},915367(e,t,r){function o(e,t,i={}){let n=(0,r(788145).tf)(e,t,i);if(n)throw new(r(101787)).yI(n.message)}function i(e,t){let o=(0,r(788145).tf)(e,t);if(void 0!==o)throw new(r(101787)).yI(o.message);return t}r.d(t,{j:()=>o,n:()=>i})}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.