diver_down 0.0.1.alpha4 → 0.0.1.alpha6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8fda9d1924b7ace3a55962178519fc291dc96c1fc99cf44fa58f4aa0b4a41232
4
- data.tar.gz: e2e693488036833f19b8cd92d7c122bd16a2363cbb9b6dbcb4463b9fb0e595d1
3
+ metadata.gz: 7d4a5bb567f1141aaa13b3d6aaf7e4201b005988a072cfd5c4de2e11a180c480
4
+ data.tar.gz: 5cf5455488b8944830f2f25fb7f26a1b4d21ed2d42ee1c2ea755138ba3aa40e3
5
5
  SHA512:
6
- metadata.gz: 1f868ba19a8a7d175ab8016219dfac382fbaa47dd7c1e5629928d2c8bb3fbd8ee29d99ea307a296d24b5f5b9caf91aaa4c9f11ca404771d331ef776b42afad54
7
- data.tar.gz: 9082d6d8e245e5d806f1a5fedeee01131d7b499ec4a2b61a904ecf083d2582999b153c9112503e4b46e091a4cbdf07ca51dade5b47845870607d417d0cb107d1
6
+ metadata.gz: 79b39d0ecc4569ce41d26c24ae03d903c431a7cdc55c9c9fecbcbbfadc807edbdcab3c34481fde3b6d728791b780951ef1923afb37414f6403a3daa415537d73
7
+ data.tar.gz: '0800be880d27a2c61c8e7153bbea2c02ab8573d347a5b5cccd9325549e7284f2d8c4316b3fb794c9fa0c42ee47e9fa9d7df9d9a24efe4d106ba5d767c2d3c0a3'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DiverDown
4
- VERSION = '0.0.1.alpha4'
4
+ VERSION = '0.0.1.alpha6'
5
5
  end
@@ -130,6 +130,7 @@ module DiverDown
130
130
  id: definition.store_id,
131
131
  definition_group: definition.definition_group,
132
132
  title: definition.title,
133
+ sources_count: definition.sources.size,
133
134
  }
134
135
  end,
135
136
  pagination: pagination.to_h
@@ -161,7 +161,7 @@ module DiverDown
161
161
 
162
162
  # @return [String]
163
163
  def to_s
164
- io.puts %(strict digraph "#{definition.title}" {)
164
+ io.puts %(strict digraph "#{escape_quote(definition.title)}" {)
165
165
  io.indented do
166
166
  io.puts('compound=true') if @compound
167
167
  io.puts('concentrate=true') if @concentrate
@@ -169,9 +169,7 @@ module DiverDown
169
169
  if @only_module
170
170
  render_only_modules
171
171
  else
172
- definition.sources.sort_by(&:source_name).each do
173
- insert_source(_1)
174
- end
172
+ render_sources
175
173
  end
176
174
  end
177
175
  io.puts '}'
@@ -214,11 +212,11 @@ module DiverDown
214
212
  module_names = specific_module_names[0..index]
215
213
  module_name = specific_module_names[index]
216
214
 
217
- io.puts %(subgraph "#{module_label(module_names)}" {)
215
+ io.puts %(subgraph "#{escape_quote(module_label(module_names))}" {)
218
216
  io.indented do
219
217
  io.puts %(id="#{@metadata_store.issue_modules_id(module_names)}")
220
- io.puts %(label="#{module_name}")
221
- io.puts %("#{module_name}" #{build_attributes(label: module_name, id: @metadata_store.issue_modules_id(module_names))})
218
+ io.puts %(label="#{escape_quote(module_name)}")
219
+ io.puts %("#{escape_quote(module_name)}" #{build_attributes(label: module_name, id: @metadata_store.issue_modules_id(module_names))})
222
220
 
223
221
  next_proc&.call
224
222
  end
@@ -260,7 +258,7 @@ module DiverDown
260
258
  minlen: MODULE_MINLEN
261
259
  )
262
260
 
263
- io.write(%("#{from_modules[-1]}" -> "#{to_modules[-1]}"))
261
+ io.write(%("#{escape_quote(from_modules[-1])}" -> "#{escape_quote(to_modules[-1])}"))
264
262
  io.write(%( #{build_attributes(**attributes)}), indent: false) unless attributes.empty?
265
263
  io.write("\n")
266
264
  end
@@ -268,13 +266,62 @@ module DiverDown
268
266
  end
269
267
  end
270
268
 
271
- def insert_source(source)
272
- if module_store.get(source.source_name).empty?
273
- io.puts %("#{source.source_name}" #{build_attributes(label: source.source_name, id: @metadata_store.issue_source_id(source))})
274
- else
275
- insert_modules(source)
269
+ def render_sources
270
+ by_modules = definition.sources.group_by do |source|
271
+ module_store.get(source.source_name)
272
+ end
273
+
274
+ # Remove duplicated prefix modules
275
+ # from [["A"], ["A", "B"]] to [["A", "B"]]
276
+ uniq_modules = by_modules.keys.uniq
277
+ uniq_modules = uniq_modules.reject do |modules|
278
+ uniq_modules.any? { _1[0..modules.size - 1] == modules && _1.length > modules.size }
276
279
  end
277
280
 
281
+ uniq_modules.each do |full_modules|
282
+ # Render module and source
283
+ if full_modules.empty?
284
+ sources = by_modules[full_modules].sort_by(&:source_name)
285
+
286
+ sources.each do |source|
287
+ insert_source(source)
288
+ insert_dependencies(source)
289
+ end
290
+ else
291
+ buf = swap_io do
292
+ indexes = (0..(full_modules.length - 1)).to_a
293
+
294
+ chain_yield(indexes) do |index, next_proc|
295
+ module_names = full_modules[0..index]
296
+ module_name = module_names[-1]
297
+
298
+ io.puts %(subgraph "#{escape_quote(module_label(module_names))}" {)
299
+ io.indented do
300
+ io.puts %(id="#{@metadata_store.issue_modules_id(module_names)}")
301
+ io.puts %(label="#{escape_quote(module_name)}")
302
+
303
+ sources = (by_modules[module_names] || []).sort_by(&:source_name)
304
+ sources.each do |source|
305
+ insert_source(source)
306
+ insert_dependencies(source)
307
+ end
308
+
309
+ next_proc&.call
310
+ end
311
+ io.puts '}'
312
+ end
313
+ end
314
+
315
+ io.write buf.string
316
+ end
317
+ end
318
+ end
319
+
320
+ def insert_source(source)
321
+ io.puts %("#{escape_quote(source.source_name)}" #{build_attributes(label: source.source_name, id: @metadata_store.issue_source_id(source))})
322
+ end
323
+
324
+ def insert_dependencies(source)
278
325
  source.dependencies.each do
279
326
  attributes = {}
280
327
  ltail = module_label(*module_store.get(source.source_name))
@@ -307,40 +354,12 @@ module DiverDown
307
354
  )
308
355
  end
309
356
 
310
- io.write(%("#{source.source_name}" -> "#{_1.source_name}"))
357
+ io.write(%("#{escape_quote(source.source_name)}" -> "#{escape_quote(_1.source_name)}"))
311
358
  io.write(%( #{build_attributes(**attributes)}), indent: false) unless attributes.empty?
312
359
  io.write("\n")
313
360
  end
314
361
  end
315
362
 
316
- def insert_modules(source)
317
- buf = swap_io do
318
- all_module_names = module_store.get(source.source_name)
319
- indexes = (0..(all_module_names.length - 1)).to_a
320
-
321
- chain_yield(indexes) do |index, next_proc|
322
- module_names = all_module_names[0..index]
323
- module_name = module_names[-1]
324
-
325
- io.puts %(subgraph "#{module_label(module_names)}" {)
326
- io.indented do
327
- io.puts %(id="#{@metadata_store.issue_modules_id(module_names)}")
328
- io.puts %(label="#{module_name}")
329
-
330
- if next_proc
331
- next_proc.call
332
- else
333
- # last. equals indexes[-1] == index
334
- io.puts %("#{source.source_name}" #{build_attributes(label: source.source_name, id: @metadata_store.issue_source_id(source))})
335
- end
336
- end
337
- io.puts '}'
338
- end
339
- end
340
-
341
- io.write buf.string
342
- end
343
-
344
363
  def chain_yield(values, &block)
345
364
  *head, tail = values
346
365
 
@@ -363,7 +382,7 @@ module DiverDown
363
382
  attrs = attrs.reject { _2.nil? || _2 == '' }
364
383
  return if attrs.empty?
365
384
 
366
- attrs_str = attrs.map { %(#{_1}="#{_2}") }.join(ATTRIBUTE_DELIMITER)
385
+ attrs_str = attrs.map { %(#{_1}="#{escape_quote(_2)}") }.join(ATTRIBUTE_DELIMITER)
367
386
 
368
387
  if _wrap
369
388
  "#{_wrap[0]}#{attrs_str}#{_wrap[1]}"
@@ -394,6 +413,10 @@ module DiverDown
394
413
 
395
414
  "cluster_#{modules.join(MODULE_DELIMITER)}"
396
415
  end
416
+
417
+ def escape_quote(string)
418
+ string.to_s.gsub(/"/, '\"')
419
+ end
397
420
  end
398
421
  end
399
422
  end
@@ -31,7 +31,13 @@ module DiverDown
31
31
 
32
32
  # @return [Hash]
33
33
  def to_h
34
- @store.dup
34
+ sorted_store = {}
35
+
36
+ @store.keys.sort.each do |key|
37
+ sorted_store[key] = @store[key]
38
+ end
39
+
40
+ sorted_store
35
41
  end
36
42
 
37
43
  # Write store to file
data/web/assets/bundle.js CHANGED
@@ -352,7 +352,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
352
352
  height: calc(100% - 60px);
353
353
  `,q6=We(pt)`
354
354
  display: block;
355
- `;var J6=Object.defineProperty,A6=(e,t,r)=>t in e?J6(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,bu=(e,t,r)=>(A6(e,typeof t!="symbol"?t+"":t,r),r),kp=new Map,wu=new WeakMap,m1=0,eD=void 0;function tD(e){return e?(wu.has(e)||(m1+=1,wu.set(e,m1.toString())),wu.get(e)):"0"}function rD(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?tD(e.root):e[t]}`).toString()}function nD(e){const t=rD(e);let r=kp.get(t);if(!r){const n=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(s=>{var l;const u=s.isIntersecting&&o.some(f=>s.intersectionRatio>=f);e.trackVisibility&&typeof s.isVisible>"u"&&(s.isVisible=u),(l=n.get(s.target))==null||l.forEach(f=>{f(u,s)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),r={id:t,observer:i,elements:n},kp.set(t,r)}return r}function oD(e,t,r={},n=eD){if(typeof window.IntersectionObserver>"u"&&n!==void 0){const l=e.getBoundingClientRect();return t(n,{isIntersecting:n,target:e,intersectionRatio:typeof r.threshold=="number"?r.threshold:0,time:0,boundingClientRect:l,intersectionRect:l,rootBounds:l}),()=>{}}const{id:o,observer:i,elements:a}=nD(r),s=a.get(e)||[];return a.has(e)||a.set(e,s),s.push(t),i.observe(e),function(){s.splice(s.indexOf(t),1),s.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),kp.delete(o))}}function iD(e){return typeof e.children!="function"}var aD=class extends g.Component{constructor(e){super(e),bu(this,"node",null),bu(this,"_unobserveCb",null),bu(this,"handleNode",t=>{this.node&&(this.unobserve(),!t&&!this.props.triggerOnce&&!this.props.skip&&this.setState({inView:!!this.props.initialInView,entry:void 0})),this.node=t||null,this.observeNode()}),bu(this,"handleChange",(t,r)=>{t&&this.props.triggerOnce&&this.unobserve(),iD(this.props)||this.setState({inView:t,entry:r}),this.props.onChange&&this.props.onChange(t,r)}),this.state={inView:!!e.initialInView,entry:void 0}}componentDidMount(){this.unobserve(),this.observeNode()}componentDidUpdate(e){(e.rootMargin!==this.props.rootMargin||e.root!==this.props.root||e.threshold!==this.props.threshold||e.skip!==this.props.skip||e.trackVisibility!==this.props.trackVisibility||e.delay!==this.props.delay)&&(this.unobserve(),this.observeNode())}componentWillUnmount(){this.unobserve()}observeNode(){if(!this.node||this.props.skip)return;const{threshold:e,root:t,rootMargin:r,trackVisibility:n,delay:o,fallbackInView:i}=this.props;this._unobserveCb=oD(this.node,this.handleChange,{threshold:e,root:t,rootMargin:r,trackVisibility:n,delay:o},i)}unobserve(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)}render(){const{children:e}=this.props;if(typeof e=="function"){const{inView:p,entry:y}=this.state;return e({inView:p,entry:y,ref:this.handleNode})}const{as:t,triggerOnce:r,threshold:n,root:o,rootMargin:i,onChange:a,skip:s,trackVisibility:l,delay:u,initialInView:f,fallbackInView:d,...m}=this.props;return g.createElement(t||"div",{ref:this.handleNode,...m},e)}};const g1=O.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e)}),$d={dedupe:!0},sD=(e,t,r)=>{const{cache:n,compare:o,suspense:i,fallbackData:a,revalidateOnMount:s,revalidateIfStale:l,refreshInterval:u,refreshWhenHidden:f,refreshWhenOffline:d,keepPreviousData:m}=r,[p,y,x,R]=rn.get(n),[v,b]=bo(e),E=g.useRef(!1),k=g.useRef(!1),_=g.useRef(v),T=g.useRef(t),L=g.useRef(r),I=()=>L.current,W=()=>I().isVisible()&&I().isOnline(),[D,G,j,Y]=Wn(n,v),B=g.useRef({}).current,$=pe(a)?r.fallback[v]:a,M=(te,oe)=>{for(const ne in B){const fe=ne;if(fe==="data"){if(!o(te[fe],oe[fe])&&(!pe(te[fe])||!o(ae,oe[fe])))return!1}else if(oe[fe]!==te[fe])return!1}return!0},U=g.useMemo(()=>{const te=!v||!t?!1:pe(s)?I().isPaused()||i?!1:pe(l)?!0:l:s,oe=se=>{const Re=Mr(se);return delete Re._k,te?{isValidating:!0,isLoading:!0,...Re}:Re},ne=D(),fe=Y(),me=oe(ne),S=ne===fe?me:oe(fe);let he=me;return[()=>{const se=oe(D());return M(se,he)?(he.data=se.data,he.isLoading=se.isLoading,he.isValidating=se.isValidating,he.error=se.error,he):(he=se,se)},()=>S]},[n,v]),P=vf.useSyncExternalStore(g.useCallback(te=>j(v,(oe,ne)=>{M(ne,oe)||te()}),[n,v]),U[0],U[1]),z=!E.current,Q=p[v]&&p[v].length>0,J=P.data,q=pe(J)?$:J,ie=P.error,Z=g.useRef(q),ae=m?pe(J)?Z.current:J:q,ce=Q&&!pe(ie)?!1:z&&!pe(s)?s:I().isPaused()?!1:i?pe(q)?!1:l:pe(q)||l,ge=!!(v&&t&&z&&ce),xe=pe(P.isValidating)?ge:P.isValidating,_e=pe(P.isLoading)?ge:P.isLoading,le=g.useCallback(async te=>{const oe=T.current;if(!v||!oe||k.current||I().isPaused())return!1;let ne,fe,me=!0;const S=te||{},he=!x[v]||!S.dedupe,se=()=>$i?!k.current&&v===_.current&&E.current:v===_.current,Re={isValidating:!1,isLoading:!1},gt=()=>{G(Re)},Ae=()=>{const Te=x[v];Te&&Te[1]===fe&&delete x[v]},qe={isValidating:!0};pe(D().data)&&(qe.isLoading=!0);try{if(he&&(G(qe),r.loadingTimeout&&pe(D().data)&&setTimeout(()=>{me&&se()&&I().onLoadingSlow(v,r)},r.loadingTimeout),x[v]=[oe(b),Bi()]),[ne,fe]=x[v],ne=await ne,he&&setTimeout(Ae,r.dedupingInterval),!x[v]||x[v][1]!==fe)return he&&se()&&I().onDiscarded(v),!1;Re.error=rt;const Te=y[v];if(!pe(Te)&&(fe<=Te[0]||fe<=Te[1]||Te[1]===0))return gt(),he&&se()&&I().onDiscarded(v),!1;const Ne=D().data;Re.data=o(Ne,ne)?Ne:ne,he&&se()&&I().onSuccess(ne,v,r)}catch(Te){Ae();const Ne=I(),{shouldRetryOnError:yt}=Ne;Ne.isPaused()||(Re.error=Te,he&&se()&&(Ne.onError(Te,v,Ne),(yt===!0||sr(yt)&&yt(Te))&&(!I().revalidateOnFocus||!I().revalidateOnReconnect||W())&&Ne.onErrorRetry(Te,v,Ne,Rt=>{const Ve=p[v];Ve&&Ve[0]&&Ve[0](gr.ERROR_REVALIDATE_EVENT,Rt)},{retryCount:(S.retryCount||0)+1,dedupe:!0})))}return me=!1,gt(),!0},[v,n]),Ee=g.useCallback((...te)=>wf(n,_.current,...te),[]);if(Gr(()=>{T.current=t,L.current=r,pe(J)||(Z.current=J)}),Gr(()=>{if(!v)return;const te=le.bind(rt,$d);let oe=0;const fe=og(v,p,(me,S={})=>{if(me==gr.FOCUS_EVENT){const he=Date.now();I().revalidateOnFocus&&he>oe&&W()&&(oe=he+I().focusThrottleInterval,te())}else if(me==gr.RECONNECT_EVENT)I().revalidateOnReconnect&&W()&&te();else{if(me==gr.MUTATE_EVENT)return le();if(me==gr.ERROR_REVALIDATE_EVENT)return le(S)}});return k.current=!1,_.current=v,E.current=!0,G({_k:b}),ce&&(pe(q)||vo?te():tg(te)),()=>{k.current=!0,fe()}},[v]),Gr(()=>{let te;function oe(){const fe=sr(u)?u(D().data):u;fe&&te!==-1&&(te=setTimeout(ne,fe))}function ne(){!D().error&&(f||I().isVisible())&&(d||I().isOnline())?le($d).then(oe):oe()}return oe(),()=>{te&&(clearTimeout(te),te=-1)}},[u,f,d,v]),g.useDebugValue(ae),i&&pe(q)&&v){if(!$i&&vo)throw new Error("Fallback data is required when using suspense in SSR.");T.current=t,L.current=r,k.current=!1;const te=R[v];if(!pe(te)){const oe=Ee(te);g1(oe)}if(pe(ie)){const oe=le($d);pe(ae)||(oe.status="fulfilled",oe.value=!0),g1(oe)}else throw ie}return{mutate:Ee,get data(){return B.data=!0,ae},get error(){return B.error=!0,ie},get isValidating(){return B.isValidating=!0,xe},get isLoading(){return B.isLoading=!0,_e}}};Ea.defineProperty(rg,"defaultValue",{value:Ef});const lD=ng(sD),uD=e=>bo(e?e(0,null):null)[0],Bd=Promise.resolve(),cD=e=>(t,r,n)=>{const o=g.useRef(!1),{cache:i,initialSize:a=1,revalidateAll:s=!1,persistSize:l=!1,revalidateFirstPage:u=!0,revalidateOnMount:f=!1,parallel:d=!1}=n,[,,,m]=rn.get(xf);let p;try{p=uD(t),p&&(p=O2+p)}catch{}const[y,x,R]=Wn(i,p),v=g.useCallback(()=>pe(y()._l)?a:y()._l,[i,p,a]);vf.useSyncExternalStore(g.useCallback(I=>p?R(p,()=>{I()}):()=>{},[i,p]),v,v);const b=g.useCallback(()=>{const I=y()._l;return pe(I)?a:I},[p,a]),E=g.useRef(b());Gr(()=>{if(!o.current){o.current=!0;return}p&&x({_l:l?E.current:b()})},[p,i]);const k=f&&!o.current,_=e(p,async I=>{const W=y()._i,D=y()._r;x({_r:rt});const G=[],j=b(),[Y]=Wn(i,I),B=Y().data,$=[];let M=null;for(let U=0;U<j;++U){const[P,z]=bo(t(U,d?null:M));if(!P)break;const[Q,J]=Wn(i,P);let q=Q().data;const ie=s||W||pe(q)||u&&!U&&!pe(B)||k||B&&!pe(B[U])&&!n.compare(B[U],q);if(r&&(typeof D=="function"?D(q,z):ie)){const Z=async()=>{if(!(P in m))q=await r(z);else{const ce=m[P];delete m[P],q=await ce}J({data:q,_k:z}),G[U]=q};d?$.push(Z):await Z()}else G[U]=q;d||(M=q)}return d&&await Promise.all($.map(U=>U())),x({_i:rt}),G},n),T=g.useCallback(function(I,W){const D=typeof W=="boolean"?{revalidate:W}:W||{},G=D.revalidate!==!1;return p?(G&&(pe(I)?x({_i:!0,_r:D.revalidate}):x({_i:!1,_r:D.revalidate})),arguments.length?_.mutate(I,{...D,revalidate:G}):_.mutate()):Bd},[p,i]),L=g.useCallback(I=>{if(!p)return Bd;const[,W]=Wn(i,p);let D;if(sr(I)?D=I(b()):typeof I=="number"&&(D=I),typeof D!="number")return Bd;W({_l:D}),E.current=D;const G=[],[j]=Wn(i,p);let Y=null;for(let B=0;B<D;++B){const[$]=bo(t(B,Y)),[M]=Wn(i,$),U=$?M().data:rt;if(pe(U))return T(j().data);G.push(U),Y=U}return T(G)},[p,i,T,b]);return{size:b(),setSize:L,mutate:T,get data(){return _.data},get error(){return _.error},get isValidating(){return _.isValidating},get isLoading(){return _.isLoading}}},fD=R2(lD,cD),y1=100,dD=(e,t=!1)=>{var d,m;const r=(p,y)=>{if(y&&y.length===0)return null;const x={per:y1,page:p+1,definition_group:e.definitionGroup,title:e.title,source:e.source};return`${Le.api.definitions.index()}?${ja(x)}`},n=g.useCallback(async p=>(await si(p)).definitions.map(x=>({id:x.id,definitionGroup:x.definition_group,title:x.title})),[]),{data:o,isLoading:i,size:a,setSize:s,isValidating:l}=fD(r,n,{keepPreviousData:t}),u=!!(((d=o==null?void 0:o[0])==null?void 0:d.length)===0||o&&((m=o==null?void 0:o[(o==null?void 0:o.length)-1])==null?void 0:m.length)<y1);return{definitions:(o??[]).flat(),isLoading:i,size:a,setSize:s,isValidating:l,isReachingEnd:u}},hD=({isOpen:e,onClickClose:t,searchDefinitionsOptions:r,setSearchDefinitionsOptions:n})=>{const[o,i]=g.useState(r),a=()=>{t(),i(r)},s=()=>{n(o),t()},l=g.useCallback(m=>{i(p=>({...p,definitionGroup:m.target.value}))},[i]),u=g.useCallback(m=>{i(p=>({...p,title:m.target.value}))},[i]),f=g.useCallback(m=>{i(p=>({...p,source:m.target.value}))},[i]),d=g.useCallback(m=>{i(p=>({...p,folding:m.target.checked}))},[i]);return N.jsx(o2,{title:"Configure Search Options",decorators:{closeButtonLabel:()=>"Close"},actionText:"Save",actionTheme:"primary",isOpen:e,onClickAction:s,onClickClose:a,onClickOverlay:a,width:"500px",children:N.jsx(pD,{children:N.jsx(Ze,{gap:1.5,children:N.jsxs(Ze,{gap:1.5,children:[N.jsx("p",{children:"Configure settings related to the display of definitions."}),N.jsxs(Ze,{gap:1.5,children:[N.jsx($o,{title:"Filtering definition group",helpMessage:"Refine the definition with a definition group",children:N.jsx(Ri,{name:"definitionGroup",type:"text",onChange:l,value:o.definitionGroup})}),N.jsx($o,{title:"Filtering title",helpMessage:"Refine the definition with a title",children:N.jsx(Ri,{name:"title",type:"text",onChange:u,value:o.title})}),N.jsx($o,{title:"Filtering source",helpMessage:"Refine the definition with a source",children:N.jsx(Ri,{name:"source",type:"text",onChange:f,value:o.source})}),N.jsx($o,{title:"Fold Definitions",helpMessage:"Folding the same definition_group",children:N.jsx(xa,{name:"folding",onChange:d,checked:o.folding})})]})]})})})})},pD=We(jt)`
355
+ `;var J6=Object.defineProperty,A6=(e,t,r)=>t in e?J6(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,bu=(e,t,r)=>(A6(e,typeof t!="symbol"?t+"":t,r),r),kp=new Map,wu=new WeakMap,m1=0,eD=void 0;function tD(e){return e?(wu.has(e)||(m1+=1,wu.set(e,m1.toString())),wu.get(e)):"0"}function rD(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?tD(e.root):e[t]}`).toString()}function nD(e){const t=rD(e);let r=kp.get(t);if(!r){const n=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(s=>{var l;const u=s.isIntersecting&&o.some(f=>s.intersectionRatio>=f);e.trackVisibility&&typeof s.isVisible>"u"&&(s.isVisible=u),(l=n.get(s.target))==null||l.forEach(f=>{f(u,s)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),r={id:t,observer:i,elements:n},kp.set(t,r)}return r}function oD(e,t,r={},n=eD){if(typeof window.IntersectionObserver>"u"&&n!==void 0){const l=e.getBoundingClientRect();return t(n,{isIntersecting:n,target:e,intersectionRatio:typeof r.threshold=="number"?r.threshold:0,time:0,boundingClientRect:l,intersectionRect:l,rootBounds:l}),()=>{}}const{id:o,observer:i,elements:a}=nD(r),s=a.get(e)||[];return a.has(e)||a.set(e,s),s.push(t),i.observe(e),function(){s.splice(s.indexOf(t),1),s.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),kp.delete(o))}}function iD(e){return typeof e.children!="function"}var aD=class extends g.Component{constructor(e){super(e),bu(this,"node",null),bu(this,"_unobserveCb",null),bu(this,"handleNode",t=>{this.node&&(this.unobserve(),!t&&!this.props.triggerOnce&&!this.props.skip&&this.setState({inView:!!this.props.initialInView,entry:void 0})),this.node=t||null,this.observeNode()}),bu(this,"handleChange",(t,r)=>{t&&this.props.triggerOnce&&this.unobserve(),iD(this.props)||this.setState({inView:t,entry:r}),this.props.onChange&&this.props.onChange(t,r)}),this.state={inView:!!e.initialInView,entry:void 0}}componentDidMount(){this.unobserve(),this.observeNode()}componentDidUpdate(e){(e.rootMargin!==this.props.rootMargin||e.root!==this.props.root||e.threshold!==this.props.threshold||e.skip!==this.props.skip||e.trackVisibility!==this.props.trackVisibility||e.delay!==this.props.delay)&&(this.unobserve(),this.observeNode())}componentWillUnmount(){this.unobserve()}observeNode(){if(!this.node||this.props.skip)return;const{threshold:e,root:t,rootMargin:r,trackVisibility:n,delay:o,fallbackInView:i}=this.props;this._unobserveCb=oD(this.node,this.handleChange,{threshold:e,root:t,rootMargin:r,trackVisibility:n,delay:o},i)}unobserve(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)}render(){const{children:e}=this.props;if(typeof e=="function"){const{inView:p,entry:y}=this.state;return e({inView:p,entry:y,ref:this.handleNode})}const{as:t,triggerOnce:r,threshold:n,root:o,rootMargin:i,onChange:a,skip:s,trackVisibility:l,delay:u,initialInView:f,fallbackInView:d,...m}=this.props;return g.createElement(t||"div",{ref:this.handleNode,...m},e)}};const g1=O.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e)}),$d={dedupe:!0},sD=(e,t,r)=>{const{cache:n,compare:o,suspense:i,fallbackData:a,revalidateOnMount:s,revalidateIfStale:l,refreshInterval:u,refreshWhenHidden:f,refreshWhenOffline:d,keepPreviousData:m}=r,[p,y,x,R]=rn.get(n),[v,b]=bo(e),E=g.useRef(!1),k=g.useRef(!1),_=g.useRef(v),T=g.useRef(t),L=g.useRef(r),I=()=>L.current,W=()=>I().isVisible()&&I().isOnline(),[D,G,j,Y]=Wn(n,v),B=g.useRef({}).current,$=pe(a)?r.fallback[v]:a,M=(te,oe)=>{for(const ne in B){const fe=ne;if(fe==="data"){if(!o(te[fe],oe[fe])&&(!pe(te[fe])||!o(ae,oe[fe])))return!1}else if(oe[fe]!==te[fe])return!1}return!0},U=g.useMemo(()=>{const te=!v||!t?!1:pe(s)?I().isPaused()||i?!1:pe(l)?!0:l:s,oe=se=>{const Re=Mr(se);return delete Re._k,te?{isValidating:!0,isLoading:!0,...Re}:Re},ne=D(),fe=Y(),me=oe(ne),S=ne===fe?me:oe(fe);let he=me;return[()=>{const se=oe(D());return M(se,he)?(he.data=se.data,he.isLoading=se.isLoading,he.isValidating=se.isValidating,he.error=se.error,he):(he=se,se)},()=>S]},[n,v]),P=vf.useSyncExternalStore(g.useCallback(te=>j(v,(oe,ne)=>{M(ne,oe)||te()}),[n,v]),U[0],U[1]),z=!E.current,Q=p[v]&&p[v].length>0,J=P.data,q=pe(J)?$:J,ie=P.error,Z=g.useRef(q),ae=m?pe(J)?Z.current:J:q,ce=Q&&!pe(ie)?!1:z&&!pe(s)?s:I().isPaused()?!1:i?pe(q)?!1:l:pe(q)||l,ge=!!(v&&t&&z&&ce),xe=pe(P.isValidating)?ge:P.isValidating,_e=pe(P.isLoading)?ge:P.isLoading,le=g.useCallback(async te=>{const oe=T.current;if(!v||!oe||k.current||I().isPaused())return!1;let ne,fe,me=!0;const S=te||{},he=!x[v]||!S.dedupe,se=()=>$i?!k.current&&v===_.current&&E.current:v===_.current,Re={isValidating:!1,isLoading:!1},gt=()=>{G(Re)},Ae=()=>{const Te=x[v];Te&&Te[1]===fe&&delete x[v]},qe={isValidating:!0};pe(D().data)&&(qe.isLoading=!0);try{if(he&&(G(qe),r.loadingTimeout&&pe(D().data)&&setTimeout(()=>{me&&se()&&I().onLoadingSlow(v,r)},r.loadingTimeout),x[v]=[oe(b),Bi()]),[ne,fe]=x[v],ne=await ne,he&&setTimeout(Ae,r.dedupingInterval),!x[v]||x[v][1]!==fe)return he&&se()&&I().onDiscarded(v),!1;Re.error=rt;const Te=y[v];if(!pe(Te)&&(fe<=Te[0]||fe<=Te[1]||Te[1]===0))return gt(),he&&se()&&I().onDiscarded(v),!1;const Ne=D().data;Re.data=o(Ne,ne)?Ne:ne,he&&se()&&I().onSuccess(ne,v,r)}catch(Te){Ae();const Ne=I(),{shouldRetryOnError:yt}=Ne;Ne.isPaused()||(Re.error=Te,he&&se()&&(Ne.onError(Te,v,Ne),(yt===!0||sr(yt)&&yt(Te))&&(!I().revalidateOnFocus||!I().revalidateOnReconnect||W())&&Ne.onErrorRetry(Te,v,Ne,Rt=>{const Ve=p[v];Ve&&Ve[0]&&Ve[0](gr.ERROR_REVALIDATE_EVENT,Rt)},{retryCount:(S.retryCount||0)+1,dedupe:!0})))}return me=!1,gt(),!0},[v,n]),Ee=g.useCallback((...te)=>wf(n,_.current,...te),[]);if(Gr(()=>{T.current=t,L.current=r,pe(J)||(Z.current=J)}),Gr(()=>{if(!v)return;const te=le.bind(rt,$d);let oe=0;const fe=og(v,p,(me,S={})=>{if(me==gr.FOCUS_EVENT){const he=Date.now();I().revalidateOnFocus&&he>oe&&W()&&(oe=he+I().focusThrottleInterval,te())}else if(me==gr.RECONNECT_EVENT)I().revalidateOnReconnect&&W()&&te();else{if(me==gr.MUTATE_EVENT)return le();if(me==gr.ERROR_REVALIDATE_EVENT)return le(S)}});return k.current=!1,_.current=v,E.current=!0,G({_k:b}),ce&&(pe(q)||vo?te():tg(te)),()=>{k.current=!0,fe()}},[v]),Gr(()=>{let te;function oe(){const fe=sr(u)?u(D().data):u;fe&&te!==-1&&(te=setTimeout(ne,fe))}function ne(){!D().error&&(f||I().isVisible())&&(d||I().isOnline())?le($d).then(oe):oe()}return oe(),()=>{te&&(clearTimeout(te),te=-1)}},[u,f,d,v]),g.useDebugValue(ae),i&&pe(q)&&v){if(!$i&&vo)throw new Error("Fallback data is required when using suspense in SSR.");T.current=t,L.current=r,k.current=!1;const te=R[v];if(!pe(te)){const oe=Ee(te);g1(oe)}if(pe(ie)){const oe=le($d);pe(ae)||(oe.status="fulfilled",oe.value=!0),g1(oe)}else throw ie}return{mutate:Ee,get data(){return B.data=!0,ae},get error(){return B.error=!0,ie},get isValidating(){return B.isValidating=!0,xe},get isLoading(){return B.isLoading=!0,_e}}};Ea.defineProperty(rg,"defaultValue",{value:Ef});const lD=ng(sD),uD=e=>bo(e?e(0,null):null)[0],Bd=Promise.resolve(),cD=e=>(t,r,n)=>{const o=g.useRef(!1),{cache:i,initialSize:a=1,revalidateAll:s=!1,persistSize:l=!1,revalidateFirstPage:u=!0,revalidateOnMount:f=!1,parallel:d=!1}=n,[,,,m]=rn.get(xf);let p;try{p=uD(t),p&&(p=O2+p)}catch{}const[y,x,R]=Wn(i,p),v=g.useCallback(()=>pe(y()._l)?a:y()._l,[i,p,a]);vf.useSyncExternalStore(g.useCallback(I=>p?R(p,()=>{I()}):()=>{},[i,p]),v,v);const b=g.useCallback(()=>{const I=y()._l;return pe(I)?a:I},[p,a]),E=g.useRef(b());Gr(()=>{if(!o.current){o.current=!0;return}p&&x({_l:l?E.current:b()})},[p,i]);const k=f&&!o.current,_=e(p,async I=>{const W=y()._i,D=y()._r;x({_r:rt});const G=[],j=b(),[Y]=Wn(i,I),B=Y().data,$=[];let M=null;for(let U=0;U<j;++U){const[P,z]=bo(t(U,d?null:M));if(!P)break;const[Q,J]=Wn(i,P);let q=Q().data;const ie=s||W||pe(q)||u&&!U&&!pe(B)||k||B&&!pe(B[U])&&!n.compare(B[U],q);if(r&&(typeof D=="function"?D(q,z):ie)){const Z=async()=>{if(!(P in m))q=await r(z);else{const ce=m[P];delete m[P],q=await ce}J({data:q,_k:z}),G[U]=q};d?$.push(Z):await Z()}else G[U]=q;d||(M=q)}return d&&await Promise.all($.map(U=>U())),x({_i:rt}),G},n),T=g.useCallback(function(I,W){const D=typeof W=="boolean"?{revalidate:W}:W||{},G=D.revalidate!==!1;return p?(G&&(pe(I)?x({_i:!0,_r:D.revalidate}):x({_i:!1,_r:D.revalidate})),arguments.length?_.mutate(I,{...D,revalidate:G}):_.mutate()):Bd},[p,i]),L=g.useCallback(I=>{if(!p)return Bd;const[,W]=Wn(i,p);let D;if(sr(I)?D=I(b()):typeof I=="number"&&(D=I),typeof D!="number")return Bd;W({_l:D}),E.current=D;const G=[],[j]=Wn(i,p);let Y=null;for(let B=0;B<D;++B){const[$]=bo(t(B,Y)),[M]=Wn(i,$),U=$?M().data:rt;if(pe(U))return T(j().data);G.push(U),Y=U}return T(G)},[p,i,T,b]);return{size:b(),setSize:L,mutate:T,get data(){return _.data},get error(){return _.error},get isValidating(){return _.isValidating},get isLoading(){return _.isLoading}}},fD=R2(lD,cD),y1=100,dD=(e,t=!1)=>{var d,m;const r=(p,y)=>{if(y&&y.length===0)return null;const x={per:y1,page:p+1,definition_group:e.definitionGroup,title:e.title,source:e.source};return`${Le.api.definitions.index()}?${ja(x)}`},n=g.useCallback(async p=>(await si(p)).definitions.map(x=>({id:x.id,definitionGroup:x.definition_group,title:x.title,sourcesCount:x.sources_count})),[]),{data:o,isLoading:i,size:a,setSize:s,isValidating:l}=fD(r,n,{keepPreviousData:t}),u=!!(((d=o==null?void 0:o[0])==null?void 0:d.length)===0||o&&((m=o==null?void 0:o[(o==null?void 0:o.length)-1])==null?void 0:m.length)<y1);return{definitions:(o??[]).flat(),isLoading:i,size:a,setSize:s,isValidating:l,isReachingEnd:u}},hD=({isOpen:e,onClickClose:t,searchDefinitionsOptions:r,setSearchDefinitionsOptions:n})=>{const[o,i]=g.useState(r),a=()=>{t(),i(r)},s=()=>{n(o),t()},l=g.useCallback(m=>{i(p=>({...p,definitionGroup:m.target.value}))},[i]),u=g.useCallback(m=>{i(p=>({...p,title:m.target.value}))},[i]),f=g.useCallback(m=>{i(p=>({...p,source:m.target.value}))},[i]),d=g.useCallback(m=>{i(p=>({...p,folding:m.target.checked}))},[i]);return N.jsx(o2,{title:"Configure Search Options",decorators:{closeButtonLabel:()=>"Close"},actionText:"Save",actionTheme:"primary",isOpen:e,onClickAction:s,onClickClose:a,onClickOverlay:a,width:"500px",children:N.jsx(pD,{children:N.jsx(Ze,{gap:1.5,children:N.jsxs(Ze,{gap:1.5,children:[N.jsx("p",{children:"Configure settings related to the display of definitions."}),N.jsxs(Ze,{gap:1.5,children:[N.jsx($o,{title:"Filtering definition group",helpMessage:"Refine the definition with a definition group",children:N.jsx(Ri,{name:"definitionGroup",type:"text",onChange:l,value:o.definitionGroup})}),N.jsx($o,{title:"Filtering title",helpMessage:"Refine the definition with a title",children:N.jsx(Ri,{name:"title",type:"text",onChange:u,value:o.title})}),N.jsx($o,{title:"Filtering source",helpMessage:"Refine the definition with a source",children:N.jsx(Ri,{name:"source",type:"text",onChange:f,value:o.source})}),N.jsx($o,{title:"Fold Definitions",helpMessage:"Folding the same definition_group",children:N.jsx(xa,{name:"folding",onChange:d,checked:o.folding})})]})]})})})})},pD=We(jt)`
356
356
  padding: ${ai.XS};
357
357
  `;function mE(){const e=P2(gE.displayName||"SideNav");return g.useMemo(()=>({wrapper:e(),item:e("item"),itemTitle:e("itemTitle")}),[e])}const mD=g.forwardRef((e,t)=>{const{title:r,prefix:n,isSelected:o=!1,size:i,onClick:a}=e,s=mE(),l=a?f=>a(f):void 0,u=`${o?"selected":""} ${s.item}`;return N.jsx(gD,{ref:t,className:u,children:N.jsxs(yD,{className:i,onClick:l,children:[n&&N.jsx(vD,{children:n}),N.jsx("span",{className:s.itemTitle,children:r})]})})}),gD=We.li`
358
358
  color: ${qt.TEXT_BLACK};
@@ -404,7 +404,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
404
404
  background-color: ${qt.COLUMN};
405
405
  list-style: none;
406
406
  padding: 0;
407
- `,wD=(e,t)=>e.reduce((r,n)=>{const o=t(n);return r[o]=r[o]??[],r[o].push(n),r},{}),xu="_____null_____",xD=g.forwardRef((e,t)=>{const{definitions:r,inView:n,loadNextPage:o,selectedDefinitionIds:i,setSelectedDefinitionIds:a,folding:s,isReachingEnd:l}=e;g.useEffect(()=>{n&&o()},[n,o]);const u=g.useMemo(()=>{const f=wD(r,m=>m.definitionGroup??xu),d=[];return Object.keys(f).forEach(m=>{const p=f[m];if(m!==xu){const y=p.map(({id:v})=>v),x=y.every(v=>i.includes(v)),R=v=>{v.preventDefault(),a(x?b=>b.filter(E=>!y.includes(E)):b=>[...new Set([...b,...y])])};d.push({key:`definition-group-${m}`,title:m,isSelected:x,onClick:R,prefix:N.jsx(xa,{checked:x,onClick:R})})}(!s||m===xu)&&p.forEach(y=>{const x=v=>{v.stopPropagation(),a(b=>b.includes(y.id)?b.filter(E=>E!==y.id):[...b,y.id])},R=i.includes(y.id);d.push({key:`definition-${y.id}`,title:y.title,isSelected:R,onClick:x,prefix:N.jsxs(N.Fragment,{children:[m===xu?null:N.jsx(SD,{className:"side-nav-indent"}),N.jsx(xa,{checked:R,onClick:x})]})})})}),d.length>0&&(d[d.length-1].ref=t),l&&d.push({key:"definition-reaching-end",title:"--- Reached the end ---",isSelected:!1,onClick:()=>{}}),d},[r,i,t,a,s,l]);return N.jsx(ED,{size:"s",items:u})}),ED=We(gE)`
407
+ `,wD=(e,t)=>e.reduce((r,n)=>{const o=t(n);return r[o]=r[o]??[],r[o].push(n),r},{}),xu="_____null_____",xD=g.forwardRef((e,t)=>{const{definitions:r,inView:n,loadNextPage:o,selectedDefinitionIds:i,setSelectedDefinitionIds:a,folding:s,isReachingEnd:l}=e;g.useEffect(()=>{n&&o()},[n,o]);const u=g.useMemo(()=>{const f=wD(r,m=>m.definitionGroup??xu),d=[];return Object.keys(f).forEach(m=>{const p=f[m];if(m!==xu){const y=p.map(({id:v})=>v),x=y.every(v=>i.includes(v)),R=v=>{v.preventDefault(),a(x?b=>b.filter(E=>!y.includes(E)):b=>[...new Set([...b,...y])])};d.push({key:`definition-group-${m}`,title:m,isSelected:x,onClick:R,prefix:N.jsx(xa,{checked:x,onClick:R})})}(!s||m===xu)&&p.forEach(y=>{const x=v=>{v.stopPropagation(),a(b=>b.includes(y.id)?b.filter(E=>E!==y.id):[...b,y.id])},R=i.includes(y.id);d.push({key:`definition-${y.id}`,title:`(${y.sourcesCount}) ${y.title}`,isSelected:R,onClick:x,prefix:N.jsxs(N.Fragment,{children:[m===xu?null:N.jsx(SD,{className:"side-nav-indent"}),N.jsx(xa,{checked:R,onClick:x})]})})})}),d.length>0&&(d[d.length-1].ref=t),l&&d.push({key:"definition-reaching-end",title:"--- Reached the end ---",isSelected:!1,onClick:()=>{}}),d},[r,i,t,a,s,l]);return N.jsx(ED,{size:"s",items:u})}),ED=We(gE)`
408
408
  background-color: ${qt.WHITE};
409
409
  text-wrap: nowrap;
410
410
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diver_down
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.alpha4
4
+ version: 0.0.1.alpha6
5
5
  platform: ruby
6
6
  authors:
7
7
  - alpaca-tc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-08 00:00:00.000000000 Z
11
+ date: 2024-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport